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)

 

REGEXP_SUBSTR 関数 [文字列]

正規表現を使用して文字列から部分文字列を抽出します。

構文
REGEXP_SUBSTR( expression, 
regular-expression 
[, start-offset [ , occurrence-number [, escape-expression ] ] ] )
パラメータ
  • expression   検索される文字列。

  • regular-expression   一致させようとするパターン。正規表現の構文の詳細については、正規表現の概要を参照してください。

  • start-offset   検索を開始する expression へのオフセット。start-offset は、正の整数で表され、文字列の左端から数えた文字数を反映します。デフォルトは 1 (文字列の起点) です。

  • occurrence-number   expression 内で複数の一致がある場合に、検出する出現箇所を示す整数を指定します。たとえば、3 を指定すると、3 番目の出現箇所が検出されます。デフォルトは 1 です。

  • escape-expression   regular-expression に使用するエスケープ文字。デフォルトは円記号 (\) です。

戻り値

LONG VARCHAR

備考

regular-expression が検出されない場合、REGEXP_SUBSTR は NULL を返します。

REGEXP 探索条件と同様に、REGEXP_SUBSTR 関数は一致と範囲評価にコードポイントを使用します。つまり、データベースの大文字と小文字の区別は結果に影響しません。REGEXP_SUBSTR による一致とセット評価の実行方法については、LIKE、REGEXP、SIMILAR TO:文字の比較における相違点を参照してください。

部分文字クラスのみを含む文字クラスに一致させる場合は、外側の角カッコと、部分文字クラス用の角カッコを必ず使用してください (たとえば、REGEXP_SUBSTR (expression, '[[:digit:]]'))。部分文字クラスの一致の詳細については、正規表現:特殊部分文字クラスを参照してください。

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

次の例では、Employees.Street カラムの値を街路番号と街路名に分割します。

SELECT REGEXP_SUBSTR( Street, '^\S+' ) as street_num, 
 REGEXP_SUBSTR( Street, '(?<=^\S+\s+).*$' ) AS street_name 
    FROM Employees;
street_num street_name
9 East Washington Street
7 Pleasant Street
539 Pond Street
1244 Great Plain Avenue
... ...

現在の接続の IP アドレスが IP アドレスの範囲内 (この場合は、10.25.101.xxx または 10.25.102.xxx) かどうかを確認するには、次の文を実行します。

IF REGEXP_SUBSTR( CONNECTION_PROPERTY( 'NodeAddress' ), '\\d+\\.\\d+\\.\\d+' )
   IN ( '10.25.101' , '10.25.102' ) THEN 
      MESSAGE 'In range' TO CLIENT;
ELSE 
      MESSAGE 'Out of range' TO CLIENT;
END IF;