POSSTR スカラー関数

POSSTR 関数は、あるストリング (source-string、 ソース・ストリングと呼ばれる) の中で、 別のストリング (search-string、 検索ストリングと呼ばれる) の最初の出現箇所の開始位置を戻します。

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

スキーマは SYSIBM です。

search-string の位置を示す数値は、1 から始まります (0 ではない)。

この関数の結果は長精度整数 (large integer) です。 引数のいずれかが NULL 値になる可能性がある場合、 結果も NULL 値になる可能性があります。 引数のいずれかが NULL 値の場合、その結果は NULL 値です。

source-string
検索対象のストリングを指定する式。 この式は、組み込みの文字ストリング、数値、ブール値、日時値のいずれかを戻す必要があります。文字ストリングでない値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。
この式は、以下のいずれかのエレメントによって指定できます。
  • 定数
  • 特殊レジスター
  • グローバル変数
  • ホスト変数 (ロケーター変数またはファイル参照変数を含む)
  • スカラー関数
  • ラージ・オブジェクトのロケーター
  • 列名
  • 上記の任意の項目を連結 (CONCAT または || を使用して) する式
search-string
検索対象のストリングを指定する式。この式は、組み込みのストリング、符号付き数値、ブール値、日時値のいずれかの値を返す必要があります。ストリングでない値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。実際の長さは、VARCHAR の最大長を超えてはなりません。
この式は、以下のいずれかのエレメントによって指定できます。
  • 定数
  • 特殊レジスター
  • グローバル変数
  • ホスト変数
  • 上記リスト項目のいずれかをオペランドとするスカラー関数
  • 上記の任意の項目を連結 (CONCAT または || を使用して) する式
  • SQL プロシージャー・パラメーター
この式は、LOB ファイル参照変数は使用できません。
以下のストリングまたはストリング式は無効です。
  • SQL ユーザー定義関数パラメーター
  • トリガー遷移変数
  • コンパウンド SQL (インライン化) ステートメント内のローカル変数

Unicode データベースでは、一方の引数が文字で (FOR BIT DATA ではない)、他方の引数が GRAPHIC である場合、search-string は、処理のために source-string のデータ・タイプに変換されます。 一方の引数が文字 FOR BIT DATA である場合、他方の引数は GRAPHIC であってはなりません (SQLSTATE 42846)。

search-stringsource-string には、 いずれも、ゼロ個以上の連続した位置があります。 ストリングが文字ストリングまたはバイナリー・ストリングの場合、 1 つの位置は 1 バイトを表します。 ストリングがグラフィック・ストリングの場合、1 つの位置は 2 バイトを表します。 POSSTR は厳密にバイト・カウント単位で操作し、データベース照合や、1 バイト文字とマルチバイト文字の間の変更には関知しません。 データベース照合とストリング単位を考慮に入れて操作するには、POSITION、LOCATE、または LOCATE_IN_STRING 関数を代わりに使用することができます。

以下の規則が適用されます。
  • source-stringsearch-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-stringsource-string の値のうち、 連続する複数の位置の同じ長さのサブストリングに等しい場合、 この関数によって戻される結果は、 source-string 値の中でそのようなサブストリングのうち最初の開始位置になります。
      • それ以外の場合、この関数によって戻される結果は 0 です。

IN_TRAY 表の項目のうち、 NOTE_TEXT 列に 'GOOD BEER' という語句が入っている項目について、 RECEIVED 列と SUBJECT 列、およびその語句の開始位置を選択します。
   SELECT RECEIVED, SUBJECT, POSSTR(NOTE_TEXT, 'GOOD BEER')
     FROM IN_TRAY
     WHERE POSSTR(NOTE_TEXT, 'GOOD BEER') <> 0