- 类别:
:doc:`/sql-reference/functions-string`(匹配/比较)
LIKE ALL¶
执行区分大小写的比较,以将字符串与一个或多个指定模式进行匹配。可在 WHERE 子句中使用此函数来筛选匹配项。
小技巧
您可以使用搜索优化服务,提高用于调用此函数的查询的性能。有关详细信息,请参阅 搜索优化服务。
- 另请参阅:
语法¶
<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]
实参¶
必填:
subject
要与模式进行比较的字符串。
pattern#
要与字符串比较的模式。必须至少指定一个模式。
可选:
escape_char
在通配符前面插入的字符,用以指示通配符应解释为常规字符而不是通配符。
返回¶
返回 BOOLEAN 或 NULL。如果存在匹配项,则值为 TRUE。否则返回 FALSE。如果任何实参为 NULL,则返回 NULL。
使用说明¶
要在模式匹配中包含单引号或其他特殊字符,可以使用 反斜杠转义序列。
NULL 与 NULL 不匹配。换言之,如果主题为 NULL,而其中一个模式为 NULL,则不被视为匹配。
可以在
subject
前使用 NOT 逻辑运算符来执行区分大小写的比较,如果与任何指定模式都不匹配,则返回 TRUE。pattern
支持 SQL 通配符:下划线 (
_
) 匹配任意单个字符。百分号 (
%
) 匹配任何包含零个或多个字符的序列。
作为匹配项,
pattern
中的通配符包括subject
中的换行符 (n
)。如果模式与整个输入字符串(主题)匹配,则该模式被视为匹配。要匹配字符串中任意位置的序列,请以
%`(例如 ``%something%`
)开始和结束模式。
如果该函数与子查询一起使用,则子查询应返回一行。
例如,仅当子查询返回单行时,才应使用以下命令:
SELECT ... WHERE x LIKE ALL (SELECT ...)
排序规则详细信息¶
仅支持 upper
、lower
和 trim
排序规则规范。还支持与 upper
、lower
和 trim
的组合(例如 upper-trim
和 lower-trim
),但区域组合(例如 en-upper
)除外。
示例¶
创建一个包含一些字符串的表:
CREATE OR REPLACE TABLE like_all_example(name VARCHAR(20));
INSERT INTO like_all_example VALUES
('John Dddoe'),
('Joe Doe'),
('John_do%wn'),
('Joe down'),
('Tom Doe'),
('Tim down'),
(null);
此查询演示如何使用带有通配符 (%
) 的模式来查找匹配项:
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%Jo%oe%','J%e')
ORDER BY name;
+-------------+
| NAME |
|-------------|
| Joe Doe |
| John Dddoe |
+-------------+
此查询演示了所有模式都需要匹配,才能获得成功结果:
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%Jo%oe%','J%n')
ORDER BY name;
+------+
| NAME |
|------|
+------+
此查询演示如何使用转义字符来表示通常为通配符(_
和 %
)的字符应视为字面量。
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
ORDER BY name;
+------------+
| NAME |
|------------|
| John_do%wn |
+------------+