MULTI_SEARCH_ALL_POSITIONS
描述
MULTI_SEARCH_ALL_POSITIONS 函数用于在字符串中批量查找多个子串的位置。返回一个数组,包含每个子串首次出现的位置。查找是大小写敏感的。
语法
MULTI_SEARCH_ALL_POSITIONS(<haystack>, <needles>)
参数
| 参数 | 说明 |
|---|---|
<haystack> | 需要搜索的目标字符串。类型:VARCHAR |
<needles> | 包含多个待查找子串的数组。类型:ARRAY |
返回值
返回 ARRAY<needles> 中第 i 个子串在 <haystack> 中首次出现的位置。
特殊情况:
- 位置从 1 开始计数
- 如果子串未找到,对应位置返回 0
- 查找是大小写敏感的
- 如果
<haystack>或<needles>为 NULL,返回 NULL - 返回的是字节位置,不是第 n 个字符位置
示例
- 基本用法:查找多个子串
SELECT multi_search_all_positions('Hello, World!', ['Hello', 'World']);
+----------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['Hello', 'World']) |
+----------------------------------------------------------+
| [1, 8] |
+----------------------------------------------------------+
- 大小写敏感:小写未找到
SELECT multi_search_all_positions('Hello, World!', ['hello', '!', 'world']);
+----------------------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['hello', '!', 'world']) |
+----------------------------------------------------------------------+
| [0, 13, 0] |
+----------------------------------------------------------------------+
- 混合查找:部分找到
SELECT multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']);
+--------------------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']) |
+--------------------------------------------------------------------+
| [1, 13, 0] |
+--------------------------------------------------------------------+
- 空数组
SELECT multi_search_all_positions('Hello', []);
+------------------------------------------+
| multi_search_all_positions('Hello', []) |
+------------------------------------------+
| [] |
+------------------------------------------+
- UTF-8 特殊字符支持
SELECT multi_search_all_positions('ṭṛì ḍḍumai Hello', ['ṭṛì', 'Hello', 'test']);
+----------------------------------------------------------------------------------------+
| multi_search_all_positions('ṭṛì ḍḍumai Hello', ['ṭṛì', 'Hello', 'test']) |
+----------------------------------------------------------------------------------------+
| [1, 21, 0] |
+----------------------------------------------------------------------------------------+
Keywords
MULTI_SEARCH,SEARCH,POSITIONS