类别:

:doc:`/sql-reference/functions-string`(匹配/比较)

LIKE ALL

执行区分大小写的比较,以将字符串与一个或多个指定模式进行匹配。可在 WHERE 子句中使用此函数来筛选匹配项。

小技巧

您可以使用搜索优化服务,提高用于调用此函数的查询的性能。有关详细信息,请参阅 搜索优化服务

另请参阅:

[ NOT ] LIKE

语法

<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]
Copy

实参

必填:

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 ...)
    
    Copy

排序规则详细信息

仅支持 upperlowertrim 排序规则规范。还支持与 upperlowertrim 的组合(例如 upper-trimlower-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);
Copy

此查询演示如何使用带有通配符 (%) 的模式来查找匹配项:

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%Jo%oe%','J%e')
  ORDER BY name;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+

此查询演示了所有模式都需要匹配,才能获得成功结果:

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%Jo%oe%','J%n')
  ORDER BY name;
Copy
+------+                                                                        
| NAME |
|------|
+------+

此查询演示如何使用转义字符来表示通常为通配符(_%)的字符应视为字面量。

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
  ORDER BY name;
Copy
+------------+                                                                  
| NAME       |
|------------|
| John_do%wn |
+------------+
语言: 中文