説明
この関数は、キーと値のペアを含む文字列から特定のキーに対応する値を抽出します。
説明
OceanBaseデータベースV4.3.5では、この関数はV4.3.5 BP1バージョンからサポートされています。
注意事項
delimiter_1とdelimiter_2を同じ文字列に指定することはできません。delimiter_1で分割された文字列に複数のdelimiter_2が含まれる場合、最初のdelimiter_2を区切り文字として使用し、対応するKeyとValueを取得します。例えば、SELECT KEYVALUE('name:Li:xiang;age:12', ';', ':', 'name');を実行した場合、実行結果は次のとおりです:+----------------------------------------------------+ | KEYVALUE('name:Li:xiang;age:12', ';', ':', 'name') | +----------------------------------------------------+ | Li:xiang | +----------------------------------------------------+ 1 row in set
構文宣言
KEYVALUE(str, [delimiter_1, delimiter_2,] key)
パラメータの説明
str: 複数のキーと値のペアを含む文字列を表します。サポートされる型:VARCHAR、TINYTEXT、TEXT、LONGTEXT、NULLなど。JSONはサポートされていません。delimiter_1, delimiter_2,:オプションで、区切り文字を表します。具体的には以下のとおりです:delimiter_1:キーと値のペアの区切り文字を表します。デフォルトは;です。サポートされる型:VARCHAR、NULL。delimiter_2:キーと値の区切り文字を表します。デフォルトは:です。サポートされる型:VARCHAR、NULL。
key: 検索するキー(key)を表します。サポートされる型:VARCHAR、NULL。つまり、strをdelimiter_1とdelimiter_2で分割した後、keyの値に対応するvalueを返します。
戻り値のタイプ
- 式のいずれかのパラメータが
NULLの場合、実行結果はNULLとなります。 - 対応するキーが見つからない場合、関数は
NULLを返します。 - 複数のキーと値のペアがマッチする場合、最初にマッチした
keyに対応するvalueを返します。
例
SELECT
KEYVALUE(NULL, ',', '=', 'b') AS key_value_null,
KEYVALUE('a=1,b=2,c=3', NULL, '=', 'b') AS delimiter_1_null,
KEYVALUE('a=1,b=2,c=3', ',', NULL, 'b') AS delimiter_2_null,
KEYVALUE('a=1,b=2,c=3', ',', '=', NULL) AS key_null,
KEYVALUE('a=1,b=2,c=3', ',', '=', 'b') AS b,
KEYVALUE('a=1,b=2,c=3,b=4', ',', '=', 'b') AS bs,
KEYVALUE('a:1;b:2;c:3', 'b') split_default;
実行結果は次のとおりです:
+----------------+------------------+------------------+----------+------+------+---------------+
| key_value_null | delimiter_1_null | delimiter_2_null | key_null | b | bs | split_default |
+----------------+------------------+------------------+----------+------+------+---------------+
| NULL | NULL | NULL | NULL | 2 | 2 | 2 |
+----------------+------------------+------------------+----------+------+------+---------------+
1 row in set