类别:

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

ENDSWITH

如果第一个表达式以第二个表达式结尾,则返回 TRUE。这两个表达式都必须是文本表达式或二进制表达式。

小技巧

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

语法

ENDSWITH( <expr1> , <expr2> )
Copy

实参

expr1

要在其中搜索的字符串。

expr2

要在 expr1 的末尾搜索的字符串。

返回

返回 BOOLEAN 或 NULL:

  • 如果 expr2expr1 结尾,则返回 TRUE。

  • 如果 expr2 不以 expr1 结尾,则返回 FALSE。

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

排序规则详细信息

The collation specifications of all input arguments must be compatible.

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

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

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

示例

这些示例使用了 ENDSWITH 函数。

确定列值是否包含字符串

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

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 ENDSWITH(s, 'te');
Copy
+-------+
| S     |
|-------|
| latte |
+-------+

将 ENDSWITH 与排序规则结合使用

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

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