宣言
REGEXP_SUBSTR(str,pattern,[position[,occurrence[,match_param[,subexpr]]]])
説明
str 内で正規表現 pattern に一致する部分文字列を検索します。部分文字列が存在しない場合は、NULL を返します。この関数はマルチバイト文字をサポートしています。match_param 以外のパラメータが NULL の場合、結果も NULL となります。パラメータの説明は以下の通りです:
strは検索対象の文字列を表し、マルチバイト文字をサポートします。patternは正規表現を表します。正規表現のルールはMySQLデータベースと互換性があります。positionは検索開始位置を表します。0より大きい正の整数でなければならず、0以下の値を指定するとエラーが発生します。入力がNULLの場合、NULLを返します。デフォルト値は1であり、最初の文字から検索を開始することを意味します。occurrenceは、一致した値のうち何番目のものを返すかを表します。0以上の正の整数でなければならず、0以下の値を指定するとエラーが発生します。入力がNULLの場合、NULLを返します。デフォルト値は1であり、最初の一致結果を返すことを意味します。match_paramは一致ルールを表し、文字列型です。一致ルールの詳細については、REGEXP_LIKEを参照してください。subexprは、正規表現内のいずれのグループの値を返すかを表します。0以上の整数でなければならず、0以下の値を指定するとエラーが発生します。デフォルト値は0であり、pattern全体に一致する部分文字列を返すことを意味します。
例
obclient> SELECT REGEXP_SUBSTR('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) FROM DUAL;
+----------------------------------------------------------------------------------+
| regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) |
+----------------------------------------------------------------------------------+
| have |
+----------------------------------------------------------------------------------+
1 row in set
obclient> SELECT REGEXP_SUBSTR('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) FROM DUAL;
+----------------------------------------------------------+
| regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) |
+----------------------------------------------------------+
| the |
+----------------------------------------------------------+
1 row in set