メインコンテンツまでスキップ
バージョン: Latest-3.4

regexp_extract

この関数は、正規表現パターンに一致するターゲット値の最初の一致する部分文字列を返します。パターンに一致する pos の項目を抽出します。パターンは str の一部に完全に一致する必要があり、関数はパターン内で一致する必要がある部分を返します。一致が見つからない場合、空の文字列を返します。

構文

VARCHAR regexp_extract(VARCHAR str, VARCHAR pattern, int pos)

ヒント

この例では、StarRocks Basics クイックスタートで紹介されている Local Climatological Data (LCD) データセットを使用しています。データをロードして、自分で例を試すことができます。

次のデータを考えます:

SELECT HourlySkyConditions FROM quickstart.weatherdata
WHERE HourlySkyConditions LIKE '%OVC%'
LIMIT 10;
+---------------------+
| HourlySkyConditions |
+---------------------+
| OVC:08 110 |
| OVC:08 120 |
| OVC:08 120 |
| OVC:08 30 |
| OVC:08 29 |
| OVC:08 27 |
| OVC:08 26 |
| OVC:08 22 |
| OVC:08 23 |
| OVC:08 22 |
+---------------------+
10 rows in set (0.03 sec)

文字列 OVC: に続く2つの数字のセットを返す

SELECT regexp_extract(HourlySkyConditions, 'OVC:(\\d+ \\d+)', 1) FROM quickstart.weatherdata
WHERE HourlySkyConditions LIKE '%OVC%'
LIMIT 10;
+-----------------------------------------------------------+
| regexp_extract(HourlySkyConditions, 'OVC:(\\d+ \\d+)', 1) |
+-----------------------------------------------------------+
| 08 110 |
| 08 120 |
| 08 120 |
| 08 30 |
| 08 29 |
| 08 27 |
| 08 26 |
| 08 22 |
| 08 23 |
| 08 22 |
+-----------------------------------------------------------+
10 rows in set (0.01 sec)

文字列 OVC: に続く2番目の数字のセットのみを返す

SELECT regexp_extract(HourlySkyConditions, 'OVC:(\\d+) (\\d+)', 2) FROM quickstart.weatherdata WHERE HourlySkyConditions LIKE '%OVC%' LIMIT 10;
+-------------------------------------------------------------+
| regexp_extract(HourlySkyConditions, 'OVC:(\\d+) (\\d+)', 2) |
+-------------------------------------------------------------+
| 110 |
| 120 |
| 120 |
| 30 |
| 29 |
| 27 |
| 26 |
| 22 |
| 23 |
| 22 |
+-------------------------------------------------------------+
10 rows in set (0.01 sec)
ヒント

同じ結果は、最初の数字のセットを一致グループ () で囲まず、最初のグループを返すことで得られます:

regexp_extract(HourlySkyConditions, 'OVC:\\d+ (\\d+)', 1)

キーワード

REGEXP_EXTRACT,REGEXP,EXTRACT