ENDS_WITH
描述
ENDS_WITH 函数用于检查字符串是否以指定的后缀结尾。
语法
ENDS_WITH(<str>, <suffix>)
参数
| 参数 | 说明 |
|---|---|
str | 要检查的主字符串。类型:VARCHAR |
suffix | 要匹配的后缀字符串。类型:VARCHAR |
返回值
返回 BOOLEAN 类型(在 Doris 中以 TINYINT 形式显示,1 表示 true,0 表示 false)。
匹配规则:
- 精确后缀匹配,大小写敏感
- 空后缀与任何字符串都匹配(返回 true)
- 支持 UTF-8 多字节字符的正确匹配
- 后缀长度不能超过主字符串长度(除非后缀为空)
特殊情况:
- 如果任一参数为 NULL,返回 NULL
- 如果后缀为空字符串,返回 true(任何字符串都以空字符串结尾)
- 如果主字符串为空但后缀不为空,返回 false
- 如果两者都为空字符串,返回 true
示例
- 基本后缀匹配
SELECT ENDS_WITH('Hello doris', 'doris'), ENDS_WITH('Hello doris', 'Hello');
+-----------------------------------+-----------------------------------+
| ENDS_WITH('Hello doris', 'doris') | ENDS_WITH('Hello doris', 'Hello') |
+-----------------------------------+-----------------------------------+
| 1 | 0 |
+-----------------------------------+-----------------------------------+
- 大小写敏感性
SELECT ENDS_WITH('Hello World', 'world'), ENDS_WITH('Hello World', 'World');
+-----------------------------------+-----------------------------------+
| ENDS_WITH('Hello World', 'world') | ENDS_WITH('Hello World', 'World') |
+-----------------------------------+-----------------------------------+
| 0 | 1 |
+-----------------------------------+-----------------------------------+
- NULL 值处理
SELECT ENDS_WITH(NULL, 'test'), ENDS_WITH('test', NULL);
+--------------------------+--------------------------+
| ENDS_WITH(NULL, 'test') | ENDS_WITH('test', NULL) |
+--------------------------+--------------------------+
| NULL | NULL |
+--------------------------+--------------------------+
- 空字符串处理
SELECT ENDS_WITH('hello', ''), ENDS_WITH('', 'world');
+-------------------------+--------------------------+
| ENDS_WITH('hello', '') | ENDS_WITH('', 'world') |
+-------------------------+--------------------------+
| 1 | 0 |
+-------------------------+--------------------------+
- 完整字符串匹配
SELECT ENDS_WITH('test', 'test'), ENDS_WITH('testing', 'test');
+---------------------------+------------------------------+
| ENDS_WITH('test', 'test') | ENDS_WITH('testing', 'test') |
+---------------------------+------------------------------+
| 1 | 1 |
+---------------------------+------------------------------+
- 文件扩展名检查
SELECT ENDS_WITH('document.pdf', '.pdf'), ENDS_WITH('image.jpg', '.png');
+------------------------------------+----------------------------------+
| ENDS_WITH('document.pdf', '.pdf') | ENDS_WITH('image.jpg', '.png') |
+------------------------------------+----------------------------------+
| 1 | 0 |
+------------------------------------+----------------------------------+
- UTF-8 多字节字符
SELECT ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai'), ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì');
+------------------------------------------+---------------------------------------+
| ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai') | ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì') |
+------------------------------------------+---------------------------------------+
| 1 | 0 |
+------------------------------------------+---------------------------------------+
- URL 路径检查
SELECT ENDS_WITH('https://example.com/api', '/api'), ENDS_WITH('https://example.com/', '.html');
+--------------------------------------------+---------------------------------------------+
| ENDS_WITH('https://example.com/api', '/api') | ENDS_WITH('https://example.com/', '.html') |
+--------------------------------------------+---------------------------------------------+
| 1 | 0 |
+--------------------------------------------+---------------------------------------------+
- 数字字符串后缀
SELECT ENDS_WITH('123456789', '789'), ENDS_WITH('123456789', '456');
+--------------------------------+--------------------------------+
| ENDS_WITH('123456789', '789') | ENDS_WITH('123456789', '456') |
+--------------------------------+--------------------------------+
| 1 | 0 |
+--------------------------------+--------------------------------+
- 电子邮件域名检查
SELECT ENDS_WITH('user@gmail.com', '.com'), ENDS_WITH('admin@company.org', '.com');
+------------------------------------+--------------------------------------+
| ENDS_WITH('user@gmail.com', '.com') | ENDS_WITH('admin@company.org', '.com') |
+------------------------------------+--------------------------------------+
| 1 | 0 |
+------------------------------------+--------------------------------------+