すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:FIND_IN_SET

最終更新日:Feb 26, 2025

FIND_IN_SET は、str1 文字列が str2 文字列内で何番目にあるかを検索します。str2 文字列は デリミタ で区切られており、検索は 1 番目から開始します。

コマンド構文

BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])

パラメーターの説明

パラメーター

必須

説明

str1

はい

STRING 型。検索する部分文字列を指定します。

str2

はい

STRING 型。デリミタ で区切られた文字列。

delimiter

いいえ

STRING 型の定数。指定しない場合は、デフォルトでカンマ (,) が使用されます。デリミタには、文字または文字列を指定できます。

戻り値の説明

この関数は、次の条件に基づいて BIGINT 値を返します。

  • str1str2 内に見つからない場合、または str1デリミタ が含まれている場合、戻り値は 0 です。

  • str1 または str2NULL の場合、関数は 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 または str2NULL の場合は、次のコマンドを使用します。

    SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;

    コマンドが正常に実行されると、次の結果が得られます。

    +------------+
    | pos        |
    +------------+
    | NULL       |
    +------------+

関連関数

FIND_IN_SET 関数は、文字列関数に分類されます。検索および形式変換に関連する文字列関数の詳細については、「文字列関数」をご参照ください。