类别:

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

CONTAINS

如果 expr1 包含 expr2,则返回 true。这两个表达式都必须是文本表达式或二进制表达式。

小技巧

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

语法

CONTAINS( <expr1> , <expr2> )
Copy

实参

expr1

要在其中搜索的字符串。

expr2

要搜索的字符串。

返回

返回 BOOLEAN 或 NULL:

  • 如果在 expr1 中找到 expr2,则返回 TRUE。

  • 如果在 expr1 中找不到 expr2,则返回 FALSE。

  • 如果任一输入表达式为 NULL,则返回 NULL。

使用说明

对于将字符串与多个指定模式进行匹配的比较,可以使用以下函数:

排序规则详细信息

The collation specifications of all input arguments must be compatible.

此函数不支持以下排序规则规范:

  • :code:`pi`(不区分标点符号)。

  • :code:`cs-ai`(区分大小写,不区分重音)。

示例

这些示例使用了 CONTAINS 函数。

确定列值是否包含字符串

创建包含字符串值的单列表。

CREATE OR REPLACE TABLE strings_test (s VARCHAR);

INSERT INTO strings_test values
  ('coffee'),
  ('ice tea'),
  ('latte'),
  ('tea'),
  (NULL);

SELECT * from strings_test;
Copy
+---------+
| S       |
|---------|
| coffee  |
| ice tea |
| latte   |
| tea     |
| NULL    |
+---------+

确定列 s 中的值是否包含字符串 te

SELECT * FROM strings_test WHERE CONTAINS(s, 'te');
Copy
+---------+
| S       |
|---------|
| ice tea |
| latte   |
| tea     |
+---------+

将 CONTAINS 与排序规则结合使用

在下面的示例中,对于具有不同排序规则规范的相同实参值,CONTAINS 返回不同的结果。

SELECT CONTAINS(COLLATE('ñ', 'en-ci-ai'), 'n'),
       CONTAINS(COLLATE('ñ', 'es-ci-ai'), 'n');
Copy
+-----------------------------------------+-----------------------------------------+
| CONTAINS(COLLATE('Ñ', 'EN-CI-AI'), 'N') | CONTAINS(COLLATE('Ñ', 'ES-CI-AI'), 'N') |
|-----------------------------------------+-----------------------------------------|
| True                                    | False                                   |
+-----------------------------------------+-----------------------------------------+
语言: 中文