POSSTR

POSSTR 関数は、あるストリング (search-string と呼ばれる) の、別のストリング (source-string と呼ばれる) の中での、最初の出現箇所の開始位置を戻します。検索ストリング が見つからず、どちらの引数も NULL でない場合、結果はゼロになります。検索ストリング が見つかった場合、結果は 1 から ソース・ストリング の実際の長さまでの数値になります。

構文図を読む構文図をスキップする
>>-POSSTR--(--source-string--,--search-string--)---------------><

関連関数については、LOCATEおよび POSITIONを参照してください。

source-string
検索を行う相手先のソース・ストリングを指定する式。 ソース・ストリング には、任意の組み込み数値、日時、またはストリング式を指定できます。数値または日時引数は、関数を評価する前に文字ストリングにキャストされます。数値および日時から文字ストリングへの変換について詳しくは、VARCHAR を参照してください。
search-string
検索するオブジェクトのストリングを指定する式。検索ストリング には、任意の組み込み数値、日時、またはストリング式を指定できます。これは、ソース・ストリング と互換性のあるものでなければなりません。 数値または日時引数は、関数を評価する前に文字ストリングにキャストされます。数値および日時から文字ストリングへの変換について詳しくは、VARCHAR を参照してください。

この関数の結果は長精度整数になります。 どちらかの引数が NULL になる可能性がある場合は、結果も NULL になる可能性があります。どちらかの引数が NULL の場合は、結果は NULL 値になります。

POSSTR 関数は、MIXED データ・ストリングを受け入れます。ただし、 POSSTR は、1 バイト文字であるか 2 バイト文字に関係なく厳密にバイト・カウント単位で実行されます。1 検索ストリングソース・ストリング の一方が混合データを含んでいる場合は、POSSTR ではなく POSITION を使用してください。 POSITION 関数は文字単位で実行します。EBCDIC エンコード・スキームでは、シフトイン、シフトアウト文字がまったく同じ場所にある必要がなく、これらの文字は、どの文字が SBCS でどの文字が DBCS であるかを示すためにだけ意味があります。

検索ストリング の CCSID がソース・ストリング の CCSID と異なる場合は、ソース・ストリング の CCSID に変換されます。ソース・ストリング の CCSID が混合データまたは UTF-8 の場合、CCSID は UTF-16 に変換されます。

POSSTR 関数を含むステートメントの実行時に *HEX 以外の照合順序が有効で、しかも引数が SBCS データ、混合データ、または Unicode データの場合、結果は、その集合の各値の重み付けされた値の比較によって求められます。 値の重み付けは、該当の照合順序に基づいています。 ICU 照合順序表は、POSSTR 関数では指定できません。

検索ストリング の長さがゼロの場合は、この関数が戻す結果は 1 です。その他の場合は、次のようになります。

  • ソース・ストリング の長さがゼロの場合は、この関数が戻す結果は 0 です。
  • その他の場合は、
    • 検索ストリング の値がソース・ストリング の値の範囲内の連続位置のサブストリングの長さに等しければ、この関数の戻す結果は、ソース・ストリング 値内のそのような最初のサブストリングの開始位置です。
    • それ以外の場合は、この関数の戻す結果は 0 です。2

  • IN_TRAY 表の全項目から、RECEIVED 列と SUBJECT 列、それに NOTE_TEXT 列の語「GOOD」の開始位置を選択します。
      SELECT RECEIVED, SUBJECT, POSSTR(NOTE_TEXT, 'GOOD')
        FROM IN_TRAY
        WHERE POSSTR(NOTE_TEXT, 'GOOD') <> 0
1 例えば、EBCDIC エンコード・スキームで source-string に混合データが含まれていると、search-string が検出されるのは、シフトイン文字とシフトアウト文字も source-string 内の正確に同じ位置で検出される場合だけです。
2 この中には、検索ストリング の方がソース・ストリング よりも長い場合が含まれます。