宣言
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で、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