FIND_IN_SET は、str1 文字列が str2 文字列内で何番目にあるかを検索します。str2 文字列は デリミタ で区切られており、検索は 1 番目から開始します。
コマンド構文
BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])
パラメーターの説明
パラメーター | 必須 | 説明 |
str1 | はい | STRING 型。検索する部分文字列を指定します。 |
str2 | はい | STRING 型。デリミタ で区切られた文字列。 |
delimiter | いいえ | STRING 型の定数。指定しない場合は、デフォルトでカンマ ( |
戻り値の説明
この関数は、次の条件に基づいて BIGINT 値を返します。
-
str1 が str2 内に見つからない場合、または str1 に デリミタ が含まれている場合、戻り値は 0 です。
-
str1 または str2 が
NULLの場合、関数はNULLを返します。
例
-
例 1:カンマ (
,) で区切られた文字列abc,hello,ab,c内の文字列abの位置を検索するには、次のコマンドを使用します。SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;コマンドが正常に実行されると、次の結果が得られます。
+------------+ | pos | +------------+ | 3 | +------------+ -
例 2:カンマ (
,) で区切られた文字列abc,hello,ab,c内の文字列hiの位置を確認するには、次のコマンドを使用します。SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;コマンドが正常に実行されると、次の結果が得られます。
+------------+ | pos | +------------+ | 0 | +------------+ -
例 3:アンダースコア (
_) で区切られた文字列abc_hello_ab_c内の文字列abの位置を特定するには、次のコマンドを使用します。SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;コマンドが正常に実行されると、次の結果が得られます。
+------------+ | pos | +------------+ | 3 | +------------+ -
例 4:入力パラメーター
str1またはstr2がNULLの場合は、次のコマンドを使用します。SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;コマンドが正常に実行されると、次の結果が得られます。
+------------+ | pos | +------------+ | NULL | +------------+
関連関数
FIND_IN_SET 関数は、文字列関数に分類されます。検索および形式変換に関連する文字列関数の詳細については、「文字列関数」をご参照ください。