类别:

字符串和二进制函数 (匹配/比较)

ILIKE ANY

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

小技巧

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

另请参阅:

[ NOT ] LIKE[ NOT ] ILIKELIKE ANY

语法

<subject> ILIKE ANY (<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 ILIKE ANY (SELECT ...)
    
    Copy

排序规则详细信息

仅支持 upperlowertrim 排序规则规范。还支持与 upperlowertrim 的组合(例如 upper-trimlower-trim),但区域组合(例如 en-upper)除外。

示例

创建一个包含一些字符串的表:

CREATE OR REPLACE TABLE ilike_example(name VARCHAR(20));
INSERT INTO ilike_example VALUES
    ('jane doe'),
    ('Jane Doe'),
    ('JANE DOE'),
    ('John Doe'),
    ('John Smith');
Copy

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

SELECT * 
  FROM ilike_example 
  WHERE name ILIKE ANY ('jane%', '%SMITH')
  ORDER BY name;
Copy
+------------+                                                                  
| NAME       |
|------------|
| JANE DOE   |
| Jane Doe   |
| John Smith |
| jane doe   |
+------------+

有关如何转义通配符的示例,请参阅 LIKE ANY

语言: 中文