LOCATE_IN_STRING スカラー関数
LOCATE_IN_STRING 関数は、指定のストリング内での引数の開始位置を戻します。
スキーマは SYSIBM です。
LOCATE_IN_STRING 関数は、あるストリング (search-string と呼ばれる) が別のストリング (source-string と呼ばれる) 内で 開始されている位置を戻します。 search-string が見つからず、どちらの引数も NULL でない場合、結果はゼロになります。 search-string が見つかった場合、結果は 1 から source-string の実際の長さまでの数値になります。
オプションの start を指定する場合、オプションのインスタンス番号も指定できます。 インスタンス引数を使用して、source-string 内での search-string の特定のオカレンスが決定されます。 それぞれの固有インスタンスには、前のインスタンスのいずれの文字も使用できますが、前のインスタンスのすべての文字を指定することはできません。 オプションのストリング単位は、start と関数の結果がどの単位で表現されるかを表すために指定できます。
search-string の長さがゼロの場合、関数によって返される結果は 1 になります。 source-string の長さがゼロの場合、関数によって返される結果は 0 になります。 そのどちらでもなく、search-string の値が source-string の値の中に隣接して位置する同じ長さのサブストリングと等しい場合、関数によって返される結果は、source-string 値内のそのサブストリングの開始位置になります。そうでない場合、関数によって返される結果は 0 になります。
- ソース文字列
- 検索を行う対象のソース・ストリングを指定する式。 source-string が戻す値は、組み込みの文字ストリング・データ・タイプ、グラフィック・ストリング・データ・タイプ、またはバイナリー・ストリング・データ・タイプであることが必要です。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
- 検索文字列
- 検索の対象となるストリングを指定する式。 search-string が戻す値は、実際の長さが 4000 バイトを超えない、組み込みの文字ストリング・データ・タイプ、グラフィック・ストリング・データ・タイプ、またはバイナリー・ストリング・データ・タイプであることが必要です。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
- 開始
- 検索が開始される source-string 内の位置を指定する式。 この式は、組み込みの INTEGER または SMALLINT データ・タイプの値を戻す必要があります。
引数を、文字ストリングまたはグラフィック・ストリングのデータ・タイプにすることもできます。 ストリング入力は、暗黙的に DECFLOAT(34) の数値にキャストされ、その後 INTEGER 値に割り当てられます。
INTEGER の値が 0 より大きい場合、検索は start の位置から開始され、ストリングの末尾にいたるまで各位置で実行されます。 この整数の値がゼロより小さい場合、検索は LENGTH(source-string) + start + 1 から 開始され、ストリングの始めまでの位置ごとで続行されます。
start が指定されていない場合、デフォルトは 1 です。 整数の値がゼロの場合は、エラーが戻されます。
- インスタンス
- source-string の中の検索する search-string のインスタンスを指定する式。 この式は、組み込みの INTEGER または SMALLINT データ・タイプの値を戻す必要があります。 インスタンス が指定されていない場合、デフォルトは 1 です。 整数の値は、1 以上でなければなりません。
- CODEUNITS16、CODEUNITS32、または OCTETS
- start と戻される結果を表すのに使用されるストリング長の単位を指定します。 source-string がビット・データとして定義された文字ストリング
の場合は、CODEUNITS16 および CODEUNITS32 は指定できません。 source-string がグラフィック・ストリングの場合は、OCTETS は指定できません。 source-string がバイナリー・ストリングの場合は、CODEUNITS16、CODEUNITS32、および OCTETS は指定できません。
- CODEUNITS16
- start と戻される結果が、16 ビットの UTF-16 コード単位の形で 表現されることを指定します。
- CODEUNITS32
- start と戻される結果が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。
- OCTETS
- start と戻される結果が、バイトの形で表現されることを指定します。
ストリング単位を明示的に指定しない場合、結果のデータ・タイプが、使用するストリング単位を決定します。 結果がグラフィック・データの場合 、start と戻される位置は 2 バイト単位で表されます。それ以外の場合には、バイト単位で表されます。
CODEUNITS16、 CODEUNITS32、OCTETSの詳細については、 文字列単位仕様を参照してください。
1 番目と 2 番目の引数は、互換性のあるストリング・タイプを持たなければなりません。 互換性に関する詳細については、「比較のための変換ルール」 を参照してください。
各検索位置で、その検索位置から LENGTH (search-string) - 1 の値だけ右にある位置までの source-string のサブストリングが、search-string と等しい場合に、一致が検出されます。
この関数の結果は長精度整数 (large integer) です。 結果は、source-string 中の search-string のインスタンスの開始位置です。 この値は、start 指定に関わらず、ストリングの開始位置を意味します。
結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。
注
- 代替構文:
- INSTR は LOCATE_IN_STRING の同義語です。
例
- 例 1:
- ストリング内でバイト単位で測定されたストリングの先頭から検索することにより、ストリング「WINNING」内の文字「N」の出現位置を検出します。
次の値を戻します。SELECT LOCATE_IN_STRING('WINNING','N',1,3,OCTETS), LOCATE_IN_STRING('WINNING','N',3,2,OCTETS), LOCATE_IN_STRING('WINNING','N',3,3,OCTETS), LOCATE_IN_STRING('WINNING','N',-1,3,OCTETS), LOCATE_IN_STRING('WINNING','N',-3,2,OCTETS), LOCATE_IN_STRING('WINNING','N',-3,3,OCTETS) FROM SYSIBM.SYSDUMMY1;6 4 6 3 3 0
