LIKE
Tests if a string matches a given pattern.
LIKE and RLIKE are similar. LIKE uses SQL patterns, whereas RLIKE uses POSIX regular expressions.
See also: RLIKE, REGEXP_COUNT, REGEXP_INSTR, REGEXP_SUBSTR, ISPREFIXOF.
Syntax
string_expr [ NOT ] LIKE string_test_expr
Arguments
| Parameter | Description | 
|---|---|
| 
 | String to test | 
| 
 | Test pattern | 
Test patterns
| Pattern | Description | 
|---|---|
| 
 | match zero or more characters | 
| 
 | match exactly one character | 
| 
 | match any character between  | 
| 
 | match any character not between  | 
| 
 | match any one of  | 
| 
 | match any character that is not one of  | 
| 
 | match  | 
- \(backslash) - escape character- Using a backslash ( - \) indicates that the wildcard is interpreted as a regular character and not as a wildcard.
Returns
TRUE if the test string matches the pattern, or FALSE otherwise.
Notes
- The test pattern must be literal string. If matching just the beginning of the string, use ISPREFIXOF which supports column references. 
- Starting with version 2020.3.1, Column references or complex expressions are also supported. 
- If the value is NULL, the result is NULL. 
Examples
For these examples, assume a table named nba, with the following structure:
CREATE TABLE nba
(
   Name text(40),
   Team text(40),
   Number tinyint,
   Position text(2),
   Age tinyint,
   Height text(4),
   Weight real,
   College text(40),
   Salary float
 );
Here’s a peek at the table contents (Download nba.csv):
| Name | Team | Number | Position | Age | Height | Weight | College | Salary | 
|---|---|---|---|---|---|---|---|---|
| Avery Bradley | Boston Celtics | 0.0 | PG | 25.0 | 6-2 | 180.0 | Texas | 7730337.0 | 
| Jae Crowder | Boston Celtics | 99.0 | SF | 25.0 | 6-6 | 235.0 | Marquette | 6796117.0 | 
| John Holland | Boston Celtics | 30.0 | SG | 27.0 | 6-5 | 205.0 | Boston University | |
| R.J. Hunter | Boston Celtics | 28.0 | SG | 22.0 | 6-5 | 185.0 | Georgia State | 1148640.0 | 
| Jonas Jerebko | Boston Celtics | 8.0 | PF | 29.0 | 6-10 | 231.0 | 5000000.0 | |
| Amir Johnson | Boston Celtics | 90.0 | PF | 29.0 | 6-9 | 240.0 | 12000000.0 | |
| Jordan Mickey | Boston Celtics | 55.0 | PF | 21.0 | 6-8 | 235.0 | LSU | 1170960.0 | 
| Kelly Olynyk | Boston Celtics | 41.0 | C | 25.0 | 7-0 | 238.0 | Gonzaga | 2165160.0 | 
| Terry Rozier | Boston Celtics | 12.0 | PG | 22.0 | 6-2 | 190.0 | Louisville | 1824360.0 | 
Match the beginning of a string
nba=> SELECT "Name","Age","Salary","Team" FROM nba WHERE "Team" LIKE 'Portland%' LIMIT 5;
Name            | Age | Salary  | Team
----------------+-----+---------+-----------------------
Cliff Alexander |  20 |  525093 | Portland Trail Blazers
Al-Farouq Aminu |  25 | 8042895 | Portland Trail Blazers
Pat Connaughton |  23 |  625093 | Portland Trail Blazers
Allen Crabbe    |  24 |  947276 | Portland Trail Blazers
Ed Davis        |  27 | 6980802 | Portland Trail Blazers
Tip
ISPREFIXOF is a more performant way to match the beginning of a string, especially This example can be written as
SELECT "Name","Age","Salary","Team" FROM nba WHERE ISPREFIXOF('Portland',"Team") LIMIT 5;
Match a wildcard character by escaping
To match a wildcard, escape it with a backslash escape character:
nba=> SELECT "Name" FROM nba WHERE "Name" LIKE '%\_%';
Name            | Age | Salary  | Team
----------------+-----+---------+-----------------------
R.J._Hunter     |  22 | 1148640 | Boston Celtics
Negate with NOT
nba=> SELECT "Name","Age","Salary","Team" FROM nba WHERE "Team" NOT LIKE 'Portland%' LIMIT 5;
Name          | Age | Salary  | Team
--------------+-----+---------+---------------
Avery Bradley |  25 | 7730337 | Boston Celtics
Jae Crowder   |  25 | 6796117 | Boston Celtics
John Holland  |  27 |         | Boston Celtics
R.J. Hunter   |  22 | 1148640 | Boston Celtics
Jonas Jerebko |  29 | 5000000 | Boston Celtics
Match the middle of a string
nba=> SELECT "Name","Age","Salary","Team" FROM nba WHERE "Team" LIKE '%zz%' LIMIT 5;
Name           | Age | Salary  | Team
---------------+-----+---------+------------------
Jordan Adams   |  21 | 1404600 | Memphis Grizzlies
Tony Allen     |  34 | 5158539 | Memphis Grizzlies
Chris Andersen |  37 | 5000000 | Memphis Grizzlies
Matt Barnes    |  36 | 3542500 | Memphis Grizzlies
Vince Carter   |  39 | 4088019 | Memphis Grizzlies
Find players with a middle name or suffix
nba=> SELECT "Name","Age","Salary","Team" FROM nba WHERE "Name" LIKE '% % %';
Name                     | Age | Salary  | Team
-------------------------+-----+---------+----------------------
James Michael McAdoo     |  23 |  845059 | Golden State Warriors
Luc Richard Mbah a Moute |  29 |  947276 | Los Angeles Clippers
Larry Nance Jr.          |  23 | 1155600 | Los Angeles Lakers
Metta World Peace        |  36 |  947276 | Los Angeles Lakers
Glenn Robinson III       |  22 | 1100000 | Indiana Pacers
Johnny O'Bryant III      |  23 |  845059 | Milwaukee Bucks
Tim Hardaway Jr.         |  24 | 1304520 | Atlanta Hawks
Frank Kaminsky III       |  23 | 2612520 | Charlotte Hornets
Kelly Oubre Jr.          |  20 | 1920240 | Washington Wizards
Otto Porter Jr.          |  23 | 4662960 | Washington Wizards
Find NON-LITERAL patterns
nba=> CREATE TABLE t(x int not null, y text not null, z text not null);
nba=> INSERT INTO t VALUES (1,'abc','a'),(2,'abcd','bc');
Select rows in which z is a prefix of y:
nba=> SELECT * FROM t WHERE y LIKE z || '%';
x |  y  | z
-------------
1 | abc | a
Select rows in which y contains z as a substring:
nba=> SELECT * FROM t WHERE y LIKE z || '%';
x |  y   | z
--------------
1 | abc  | a
2 | abcd | bc
Values that contain wildcards as well:
nba=> CREATE TABLE patterns(x text not null);
nba=> INSERT INTO patterns values ('%'),('a%'),('%a');
nba=> SELECT x, 'abc' LIKE x FROM patterns;
x  |  ?column?
--------------
%  | 1
a% | 1
%a | 0