CONCAT_WS
説明
第1パラメータsepをコネクタとして使用し、第2パラメータとそれ以降のすべてのパラメータ(または1つのARRAYまたは複数のARRAY内のすべての文字列)を文字列に連結します。特殊なケース:
-
セパレータがNULLの場合、NULLが返されます。
-
CONCAT_WS関数は空文字列をスキップしませんが、NULL値はスキップします。 -
CONCAT_WS関数はARRAYパラメータ内の空文字列をスキップしませんが、ARRAY内のNULL値はスキップします。 -
CONCAT_WS関数は複数の配列を入力した場合、NULLパラメータをスキップせず、空文字列を返します。 -
第1パラメータは
string型である必要があり、その他のパラメータは同じ型で、stringまたはARRAY型に属する必要があります
構文
CONCAT_WS ( <sep> , <str> [ , <str> ] )
CONCAT_WS ( <sep> , <array> [ , <array> ])
パラメータ
| Parameter | デスクリプション |
|---|---|
<sep> | 文字列を連結するためのコネクタ、string型またはvarchar型です |
<str> | 連結される文字列、string型またはvarchar型です |
<array> | 連結される配列、ARRAY型で、すべての要素はstring型またはvarchar型です |
Return value
パラメータ<sep>または<array>が<str>と連結された文字列。特殊なケース:
- 区切り文字がNULLの場合、NULLを返します。
- 複数の配列を持つパラメータでnullが含まれている場合、関数は空文字列を返します。
Example
またはを使用して文字列を連結する
SELECT CONCAT_WS("or", "d", "is"),CONCAT_WS(NULL, "d", "is"),CONCAT_WS('or', 'd', NULL, 'is')
+----------------------------+----------------------------+------------------------------------------+
| concat_ws('or', 'd', 'is') | concat_ws(NULL, 'd', 'is') | concat_ws('or', 'd', NULL, 'is') |
+----------------------------+----------------------------+------------------------------------------+
| doris | NULL | doris |
+----------------------------+----------------------------+------------------------------------------+
配列arraysをorを使用して連結します
SELECT CONCAT_WS("or", ["d", "is"]),CONCAT_WS(NULL, ["d", "is"]),CONCAT_WS("or", ["d", NULL,"is"])
+------------------------------+------------------------------+------------------------------------+
| concat_ws('or', ['d', 'is']) | concat_ws(NULL, ['d', 'is']) | concat_ws('or', ['d', NULL, 'is']) |
+------------------------------+------------------------------+------------------------------------+
| doris | NULL | doris |
+------------------------------+------------------------------+------------------------------------+
複数の配列を連結する
mysql> SELECT CONCAT_WS("-", ["a", "b"], ["c", NULL], ["d"]);
+------------------------------------------------+
| CONCAT_WS("-", ["a", "b"], ["c", NULL], ["d"]) |
+------------------------------------------------+
| a-b-c-d |
+------------------------------------------------+
文字列パラメータでのNULLの処理
mysql> SELECT CONCAT_WS("|", "hello", "", "world", NULL);
+--------------------------------------------+
| CONCAT_WS("|", "hello", "", "world", NULL) |
+--------------------------------------------+
| hello||world |
+--------------------------------------------+
多次元配列でNULLの場合は空を返す;
mysql> SELECT CONCAT_WS("-", ["a", "b"], null,["c", NULL], ["d"]);
+-----------------------------------------------------+
| CONCAT_WS("-", ["a", "b"], null,["c", NULL], ["d"]) |
+-----------------------------------------------------+
| |
+-----------------------------------------------------+
文字列と配列の混在(無効)
mysql> SELECT CONCAT_WS(",", "a", ["b", "c"]);
ERROR 1105 (HY000): errCode = 2, detailMessage = can not cast from origin type ARRAY<VARCHAR(1)> to target type=VARCHAR(65533)
全てのNULL入力
mysql> SELECT CONCAT_WS("x", NULL, NULL);
+----------------------------+
| CONCAT_WS("x", NULL, NULL) |
+----------------------------+
| |
+----------------------------+
中国語文字の連結
mysql> SELECT CONCAT_WS("x", '中文', '中文');
+------------------------------------+
| CONCAT_WS("x", '中文', '中文') |
+------------------------------------+
| 中文x中文 |
+------------------------------------+
多次元配列内の中国語文字
mysql> SELECT CONCAT_WS("x", ['中文'], ['中文']);
+----------------------------------------+
| CONCAT_WS("x", ['中文'], ['中文']) |
+----------------------------------------+
| 中文x中文 |
+----------------------------------------+
それらを挿入して連結する
DROP TABLE IF EXISTS test_concat_ws_1;
CREATE TABLE test_concat_ws_1 (id INT, a ARRAY<VARCHAR>, b ARRAY<VARCHAR>) ENGINE=OLAP DISTRIBUTED BY HASH(id) BUCKETS 1 PROPERTIES ('replication_num' = '1')
INSERT INTO test_concat_ws_1 VALUES (1, ['a','b'], ['css',null,'d']), (2, ['x',null], ['y','z']),(3,['你好','世界'],['Doris',null,'Nereids'])
SELECT concat_ws('-', a, b) FROM test_concat_ws_1 ORDER BY id
+-----------------------------+
| concat_ws('-', a, b) |
+-----------------------------+
| a-b-css-d |
| x-y-z |
| 你好-世界-Doris-Nereids |
+-----------------------------+