メインコンテンツまでスキップ
バージョン: 4.x

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 |
+-----------------------------+