POSITION
POSITION 関数は、あるストリング (検索ストリング と呼ばれる) の、別のストリング (ソース・ストリング と呼ばれる) の中での、最初の出現箇所の開始位置を戻します。検索ストリング が見つからず、どちらの引数も NULL でない場合、結果はゼロになります。検索ストリング が見つかった場合、結果は 1 から ソース・ストリング の実際の長さまでの数値になります。
>>-+-POSITION--(--search-string--IN--source-string--)-+-------->< '-POSITION--(--search-string--,--source-string--)--'
- search-string
- 検索するオブジェクトのストリングを指定する式。検索ストリング には、任意の組み込み数値、日時、またはストリング式を指定できます。これは、ソース・ストリング と互換性のあるものでなければなりません。 数値または日時引数は、関数を評価する前に文字ストリングにキャストされます。数値および日時から文字ストリングへの変換について詳しくは、VARCHAR を参照してください。
- source-string
- 検索を行う相手先のソース・ストリングを指定する式。 ソース・ストリング には、任意の組み込み数値、日時、またはストリング式を指定できます。数値または日時引数は、関数を評価する前に文字ストリングにキャストされます。数値および日時から文字ストリングへの変換について詳しくは、VARCHAR を参照してください。
この関数の結果は長精度整数になります。 どちらかの引数が NULL になる可能性がある場合は、結果も NULL になる可能性があります。どちらかの引数が NULL の場合は、結果は NULL 値になります。
POSITION 関数は文字単位で実行します。POSITION は文字ストリング単位で実行されるため、シフトイン、シフトアウト文字がまったく同じ場所にある必要がなく、これらの文字は、どの文字が SBCS でどの文字が DBCS であるかを示すためにだけ意味があります。
検索ストリング の CCSID がソース・ストリング の CCSID と異なる場合は、ソース・ストリング の CCSID に変換されます。ソース・ストリング の CCSID が混合データまたは UTF-8 の場合、CCSID は UTF-16 に変換されます。
POSITION 関数を含むステートメントの実行時に *HEX 以外の照合順序が有効で、しかも引数が SBCS データ、混合データ、または Unicode データの場合、結果は、集合の各値の重み付けされた値の比較によって求められます。 値の重み付けは、該当の照合順序に基づいています。 ICU 照合順序表は、POSITION 関数では指定できません。
検索ストリング の長さがゼロの場合は、この関数が戻す結果は 1 です。その他の場合は、次のようになります。
- ソース・ストリング の長さがゼロの場合は、この関数が戻す結果は 0 です。
- その他の場合は、
- 検索ストリング の値がソース・ストリング の値の範囲内の連続位置のサブストリングの長さに等しければ、この関数の戻す結果は、ソース・ストリング 値内のそのような最初のサブストリングの開始位置です。
- それ以外の場合は、この関数の戻す結果は 0 です。1
例
- IN_TRAY 表の全項目から、RECEIVED 列と SUBJECT 列、それに NOTE_TEXT 列の語「GOOD」の開始位置を選択します。
SELECT RECEIVED, SUBJECT, POSITION('GOOD', NOTE_TEXT) FROM IN_TRAY WHERE POSITION('GOOD', NOTE_TEXT) <> 0
- NOTE は VARCHAR(128) の列で Unicode UTF-8 でエンコードされ、値 'Jürgen lives on Hegelstraße' を含むものと想定します。ストリング内で文字「ß」の文字位置を検索します。
POSITION の場合は値 26、POSSTR の場合には値 27 を戻します。SELECT POSITION('ß', NOTE), POSSTR( NOTE, 'ß') FROM T1