- カテゴリ:
文字列とバイナリ関数 (一般)
SPLIT¶
特定の区切り文字で特定の文字列を分割し、結果を文字列の配列で返します。
ソース文字列内の連続する分割文字列、またはソース文字列の先頭または末尾に分割文字列が存在すると、出力に空の文字列が生じます。空の区切り文字列は、ソース文字列のみを含む配列になります。いずれかのパラメーターが NULLの場合、 NULL が返されます。
結果は、半構造化データ(例: FLATTEN および ARRAY_SIZE)を操作する関数および構造で使用できます。
- こちらもご参照ください:
構文¶
SPLIT(<string>, <separator>)
引数¶
string
部分に分割されるテキストです。
separator
文字列を分割するテキストです。
戻り値¶
返される値のデータ型は ARRAYです。
照合の詳細¶
この関数は、次の照合順序仕様をサポートしません。
pi
(句読点は区別しない)。cs-ai
(大文字と小文字は区別、アクセント記号は区別しない)。
出力配列の値には照合順序仕様が含まれていないため、それ以上の照合順序操作はサポートされません。
注釈
upper
または lower
照合順序指定子を持つ列でこの関数を使用するには、 アカウントで2024_02動作変更バンドルを有効にする 必要があります。
アカウントでこのバンドルを有効にするには、以下のステートメントを実行します。
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
例¶
localhost IP アドレ ス 127.0.0.1
を4つの部分のそれぞれで構成される配列に分割します。
SELECT SPLIT('127.0.0.1', '.'); +-------------------------+ | SPLIT('127.0.0.1', '.') | |-------------------------| | [ | | "127", | | "0", | | "0", | | "1" | | ] | +-------------------------+
セパレーターとして垂直線を含む文字列を分割します(出力には空の文字列を含む)。
SELECT SPLIT('|a||', '|'); +--------------------+ | SPLIT('|A||', '|') | |--------------------| | [ | | "", | | "a", | | "", | | "" | | ] | +--------------------+
LATERAL FLATTEN 構造を使用して、単一の文字列から複数の記録を生成するには、 SPLIT の結果を使用します。 FLATTEN は、 VARIANT、 OBJECT、または ARRAY 列を取り、側面ビュー(つまり FROM 句でその前にある他のテーブルを参照する相関を含むインラインビュー)を生成するテーブル関数です。
SELECT * FROM persons; ------+---------------------+ NAME | CHILDREN | ------+---------------------+ Mark | Marky,Mark Jr,Maria | John | Johnny,Jane | ------+---------------------+ SELECT name, C.value::string AS childName FROM persons, LATERAL FLATTEN(input=>split(children, ',')) C; ------+-----------+ NAME | CHILDNAME | ------+-----------+ John | Johnny | John | Jane | Mark | Marky | Mark | Mark Jr | Mark | Maria | ------+-----------+