Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (P ~ Z)

 

PATINDEX 関数 [文字列]

文字列のパターンが最初に出現した開始位置を表す整数を返します。

構文
PATINDEX( '%pattern%', string-expression )
パラメータ
  • pattern   検索するパターン。先頭の % ワイルドカードを省略すると、PATINDEX 関数は、パターンが文字列の先頭に出現する場合は 1 を返し、それ以外の場合は 0 を返します。

    パターンは、LIKE 比較と同じワイルドカードを使用します。次のワイルドカードがあります。

    ワイルドカード 一致するもの
    _ (アンダースコア) 任意の 1 文字
    % (パーセント記号) 0 個以上の文字からなる任意の文字列
    [] 指定範囲内、または一連の指定文字の任意の 1 文字
    [^] 指定範囲外、または一連の指定文字以外の任意の 1 文字

  • string-expression   パターンを検索する文字列。

戻り値

INT

備考

PATINDEX 関数は、パターンが最初に出現した開始位置を返します。パターンが見つからない場合は、0 を返します。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の文は、値 2 を返します。

SELECT PATINDEX( '%hoco%', 'chocolate' );

次の文は、値 11 を返します。

SELECT PATINDEX( '%4_5_', '0a1A 2a3A 4a5A' );

次の文は、14 を返します。これは、文字列式の最初の英数字以外の文字です。データベースで大文字と小文字が区別されない場合は、'%[^a-zA-Z0-9]%' の代わりにパターン '%[^a-z0-9]%' を使用できます。

SELECT PATINDEX( '%[^a-zA-Z0-9]%', 'SQLAnywhere11 has many new features' );

文字列の最初の英数字を取得するには、次の手順に従います。

SELECT LEFT( @string, PATINDEX( '%[^a-zA-Z0-9]%', @string ) );