POSSTR スカラー関数
POSSTR 関数は、あるストリング (source-string、 ソース・ストリングと呼ばれる) の中で、 別のストリング (search-string、 検索ストリングと呼ばれる) の最初の出現箇所の開始位置を戻します。
スキーマは SYSIBM です。
search-string の位置を示す数値は、1 から始まります (0 ではない)。
この関数の結果は長精度整数 (large integer) です。 引数のいずれかが NULL 値になる可能性がある場合、 結果も NULL 値になる可能性があります。 引数のいずれかが NULL 値の場合、その結果は NULL 値です。
- ソース・ストリング
- 検索対象のストリングを指定する式。 この式は、組み込みの文字ストリング、数値、 ブール値、 または日時値を返す必要があります。 文字ストリングでない値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 検索ストリング
- 検索対象のストリングを指定する式。 この式は、組み込みストリング、符号付き数値、 ブール値、 または日時値の値を返す必要があります。 ストリングでない値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 実際の長さは、VARCHAR の最大長を超えてはなりません。
式には、以下のエレメントを含めることはできません (SQLSTATE 42824)。
- LOB ファイル参照変数
- インライン化された SQL ユーザー定義関数のパラメーター
- インライン化されたトリガー内の遷移変数
- コンパウンド SQL (インライン化) ステートメント内のローカル変数
- ユーザー定義関数
- 非決定論的組み込み関数
- スカラー全選択
Unicode データベースでは、一方の引数が文字で (FOR BIT DATA ではない)、他方の引数が GRAPHIC である場合、search-string は、処理のために source-string のデータ・タイプに変換されます。 一方の引数が文字 FOR BIT DATA である場合、他方の引数は GRAPHIC であってはなりません (SQLSTATE 42846)。
search-string と source-string には、 いずれも、ゼロ個以上の連続した位置があります。 ストリングが文字ストリングまたはバイナリー・ストリングの場合、 1 つの位置は 1 バイトを表します。 ストリングがグラフィック・ストリングの場合、1 つの位置は 2 バイトを表します。 POSSTR は厳密にバイト・カウント単位で操作し、データベース照合や、1 バイト文字とマルチバイト文字の間の変更には関知しません。 データベース照合とストリング単位を考慮に入れて操作するには、POSITION、LOCATE、または LOCATE_IN_STRING 関数を代わりに使用することができます。
- source-string と search-string のデータ・タイプには、互換性がある必要があります。
そうでない場合、エラーになります (SQLSTATE 42884)。
- source-string が文字ストリングの場合、search-string は CLOB 以外の文字ストリングでなければならず、実際の長さが 32672 バイト以下でなければなりません。
- source-string が GRAPHIC ストリングの場合、search-string は DBCLOB 以外の GRAPHIC ストリングでなければならず、実際の長さが 2 バイト文字で 16336 個以下でなければなりません。
- source-string がバイナリー・ストリングである場合、search-string は、実際の長さが 32672 バイト以下のバイナリー・ストリングでなければなりません。
- search-string の長さがゼロの場合、 この関数によって戻される結果は 1 です。
- それ以外の場合は、次のとおりです。
- source-string の長さがゼロの場合、 関数によって戻される結果はゼロです。
- それ以外の場合は、次のとおりです。
- search-string が source-string の値のうち、 連続する複数の位置の同じ長さのサブストリングに等しい場合、 この関数によって戻される結果は、 source-string 値の中でそのようなサブストリングのうち最初の開始位置になります。
- それ以外の場合、この関数によって戻される結果は 0 です。
例
SELECT RECEIVED, SUBJECT, POSSTR(NOTE_TEXT, 'GOOD BEER')
FROM IN_TRAY
WHERE POSSTR(NOTE_TEXT, 'GOOD BEER') <> 0