REGEXP_SPLIT_TO_TABLE
正規表現パターンを使用して文字列を分割し、各セグメントをテーブルとして返します。
構文
REGEXP_SPLIT_TO_TABLE(string, pattern [, flags text])
サポートされる flags パラメータ:
以下の文字を組み合わせることでマッチング動作を制御できる、柔軟な正規表現の設定オプションを提供します。
i(大文字小文字を区別しない): パターンマッチングで大文字と小文字を区別しません。c(大文字小文字を区別する): パターンマッチングで大文字と小文字を区別します(デフォルトの動作)。nまたはm(複数行): 複数行モードを有効にします。このモードでは、^と$はそれぞれ文字列全体の先頭と末尾だけでなく、各行の先頭と末尾にもマッチします。ドット.は改行文字にマッチしません。s(単一行): 単一行モード(dot-matches-newline とも呼ばれます)を有効にします。このモードでは、ドット.は改行文字を含む任意の文字にマッチします。x(空白を無視): パターン内の空白文字を無視します(パターンの可読性が向上します)。q(リテラル):patternを正規表現ではなくリテラル文字列として扱います。
例
基本的な行生成
SELECT REGEXP_SPLIT_TO_TABLE('one,two,three', ',');
┌─────────┐
│ one │
│ two │
│ three │
└─────────┘
ログの解析
SELECT REGEXP_SPLIT_TO_TABLE('ERR:404:File Not Found', ':');
┌──────────────────┐
│ ERR │
│ 404 │
│ File Not Found │
└──────────────────┘
flag text を使用する
SELECT regexp_split_to_table('One_Two_Three', '[_-]', 'i')
╭────────╮
│ One │
│ Two │
│ Three │
╰────────╯
ネストした使用方法
WITH data AS (
SELECT 'id=123,name=John' AS kv_pairs
)
SELECT
REGEXP_SPLIT_TO_TABLE(kv_pairs, ',') AS pair
FROM data;
┌──────────────┐
│ id=123 │
│ name=John │
└──────────────┘
関連情報
- SPLIT: 単純な文字列分割用
- REGEXP_SPLIT_TO_ARRAY: 文字列を配列に分割します