メインコンテンツまでスキップ
に最終更新

MULTI_SEARCH_ALL_POSITIONS

説明​

MULTI_SEARCH_ALL_POSITIONS関数は、文字列内の複数の部分文字列を一括検索します。各部分文字列が最初に出現する位置を格納した配列を返します。検索では大文字と小文字が区別されます。

構文​

MULTI_SEARCH_ALL_POSITIONS(<haystack>, <needles>)

パラメータ​

パラメータ説明
<haystack>検索対象の文字列。型: VARCHAR
<needles>検索する複数の部分文字列を格納した配列。型: ARRAY

戻り値​

ARRAY型を返します。配列のi番目の要素は、<needles>のi番目の部分文字列が<haystack>内で最初に出現する位置を表します。

特別なケース:

  • 位置は1から数えます
  • 部分文字列が見つからない場合、対応する位置として0を返します
  • 検索では大文字と小文字が区別されます
  • <haystack>がNULLの場合、<needles>と同じ長さの、すべての要素がゼロの配列を返します
  • <needles>がNULLの場合、両方の引数がNULLの場合も含め、空の配列[]を返します
  • 文字の位置ではなく、バイト単位の位置を返します

使用例​

  1. 基本的な使い方: 複数の部分文字列を検索する
SELECT multi_search_all_positions('Hello, World!', ['Hello', 'World']);
+----------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['Hello', 'World']) |
+----------------------------------------------------------+
| [1, 8] |
+----------------------------------------------------------+
  1. 大文字と小文字の区別: 小文字は見つからない
SELECT multi_search_all_positions('Hello, World!', ['hello', '!', 'world']);
+----------------------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['hello', '!', 'world']) |
+----------------------------------------------------------------------+
| [0, 13, 0] |
+----------------------------------------------------------------------+
  1. 混在した検索: 一部の文字列だけが見つかる
SELECT multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']);
+--------------------------------------------------------------------+
| multi_search_all_positions('Hello, World!', ['Hello', '!', 'xyz']) |
+--------------------------------------------------------------------+
| [1, 13, 0] |
+--------------------------------------------------------------------+
  1. 空の配列
SELECT multi_search_all_positions('Hello', []);
+------------------------------------------+
| multi_search_all_positions('Hello', []) |
+------------------------------------------+
| [] |
+------------------------------------------+
  1. 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