| --- |
| layout: global |
| title: LIKE Predicate |
| displayTitle: LIKE Predicate |
| license: | |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --- |
| |
| ### Description |
| |
| A LIKE predicate is used to search for a specific pattern. This predicate also supports multiple patterns with quantifiers include `ANY`, `SOME` and `ALL`. |
| |
| ### Syntax |
| |
| ```sql |
| [ NOT ] { LIKE search_pattern [ ESCAPE esc_char ] | [ RLIKE | REGEXP ] regex_pattern } |
| |
| [ NOT ] { LIKE quantifiers ( search_pattern [ , ... ]) } |
| ``` |
| |
| ### Parameters |
| |
| * **search_pattern** |
| |
| Specifies a string pattern to be searched by the `LIKE` clause. It can contain special pattern-matching characters: |
| |
| * `%` matches zero or more characters. |
| * `_` matches exactly one character. |
| |
| * **esc_char** |
| |
| Specifies the escape character. The default escape character is `\`. |
| |
| * **regex_pattern** |
| |
| Specifies a regular expression search pattern to be searched by the `RLIKE` or `REGEXP` clause. |
| |
| * **quantifiers** |
| |
| Specifies the predicate quantifiers include `ANY`, `SOME` and `ALL`. `ANY` or `SOME` means if one of the patterns matches the input, then return true; `ALL` means if all the patterns matches the input, then return true. |
| |
| ### Examples |
| |
| ```sql |
| CREATE TABLE person (id INT, name STRING, age INT); |
| INSERT INTO person VALUES |
| (100, 'John', 30), |
| (200, 'Mary', NULL), |
| (300, 'Mike', 80), |
| (400, 'Dan', 50), |
| (500, 'Evan_w', 16); |
| |
| SELECT * FROM person WHERE name LIKE 'M%'; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |300|Mike| 80| |
| |200|Mary|null| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name LIKE 'M_ry'; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |200|Mary|null| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name NOT LIKE 'M_ry'; |
| +---+------+---+ |
| | id| name|age| |
| +---+------+---+ |
| |500|Evan_W| 16| |
| |300| Mike| 80| |
| |100| John| 30| |
| |400| Dan| 50| |
| +---+------+---+ |
| |
| SELECT * FROM person WHERE name RLIKE 'M+'; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |300|Mike| 80| |
| |200|Mary|null| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name REGEXP 'M+'; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |300|Mike| 80| |
| |200|Mary|null| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name LIKE '%\_%'; |
| +---+------+---+ |
| | id| name|age| |
| +---+------+---+ |
| |500|Evan_W| 16| |
| +---+------+---+ |
| |
| SELECT * FROM person WHERE name LIKE '%$_%' ESCAPE '$'; |
| +---+------+---+ |
| | id| name|age| |
| +---+------+---+ |
| |500|Evan_W| 16| |
| +---+------+---+ |
| |
| SELECT * FROM person WHERE name LIKE ALL ('%an%', '%an'); |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |400| Dan| 50| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name LIKE ANY ('%an%', '%an'); |
| +---+------+---+ |
| | id| name|age| |
| +---+------+---+ |
| |400| Dan| 50| |
| |500|Evan_W| 16| |
| +---+------+---+ |
| |
| SELECT * FROM person WHERE name LIKE SOME ('%an%', '%an'); |
| +---+------+---+ |
| | id| name|age| |
| +---+------+---+ |
| |400| Dan| 50| |
| |500|Evan_W| 16| |
| +---+------+---+ |
| |
| SELECT * FROM person WHERE name NOT LIKE ALL ('%an%', '%an'); |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |100|John| 30| |
| |200|Mary|null| |
| |300|Mike| 80| |
| +---+----+----+ |
| |
| SELECT * FROM person WHERE name NOT LIKE ANY ('%an%', '%an'); |
| +---+------+----+ |
| | id| name| age| |
| +---+------+----+ |
| |100| John| 30| |
| |200| Mary|null| |
| |300| Mike| 80| |
| |500|Evan_W| 16| |
| +---+------+----+ |
| |
| SELECT * FROM person WHERE name NOT LIKE SOME ('%an%', '%an'); |
| +---+------+----+ |
| | id| name| age| |
| +---+------+----+ |
| |100| John| 30| |
| |200| Mary|null| |
| |300| Mike| 80| |
| |500|Evan_W| 16| |
| +---+------+----+ |
| ``` |
| |
| ### Related Statements |
| |
| * [SELECT](sql-ref-syntax-qry-select.html) |
| * [WHERE Clause](sql-ref-syntax-qry-select-where.html) |