に最終更新
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>がNULLの場合、<needles>と同じ長さの、すべての要素がゼロの配列を返します<needles>がNULLの場合、両方の引数がNULLの場合も含め、空の配列[]を返します- 文字の位置ではなく、バイト単位の位置を返します
使用例
- 基本的な使い方: 複数の部分文字列を検索する
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] |
+----------------------------------------------------------------------------------------+
NULL入力:
SELECT multi_search_all_positions(NULL, ['a', 'b']) AS null_haystack,
multi_search_all_positions('a', NULL) AS null_needles,
multi_search_all_positions(NULL, NULL) AS both_null;
+---------------+--------------+-----------+
| null_haystack | null_needles | both_null |
+---------------+--------------+-----------+
| [0, 0] | [] | [] |
+---------------+--------------+-----------+
キーワード
MULTI_SEARCH,SEARCH,POSITIONS