6788304240
### What changes were proposed in this pull request? Add doc for 'like any' and 'like all' operators in sql-ref-syntx-qry-select-like.cmd ### Why are the changes needed? make the usage of 'like any' and 'like all' known to more users ### Does this PR introduce _any_ user-facing change? Yes. <img width="687" alt="Screen Shot 2021-01-06 at 21 10 38" src="https://user-images.githubusercontent.com/692303/103767385-dc1ffb80-5063-11eb-9529-89479531425f.png"> <img width="495" alt="Screen Shot 2021-01-06 at 21 11 06" src="https://user-images.githubusercontent.com/692303/103767391-dde9bf00-5063-11eb-82ce-63bdd11593a1.png"> <img width="406" alt="Screen Shot 2021-01-06 at 21 11 20" src="https://user-images.githubusercontent.com/692303/103767396-df1aec00-5063-11eb-8e81-a192e6c72431.png"> ### How was this patch tested? No tests Closes #31008 from beliefer/SPARK-33977. Lead-authored-by: gengjiaan <gengjiaan@360.cn> Co-authored-by: beliefer <beliefer@163.com> Signed-off-by: Takeshi Yamamuro <yamamuro@apache.org>
178 lines
4.2 KiB
Markdown
178 lines
4.2 KiB
Markdown
---
|
|
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)
|