1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
# name: test/sql/function/string/test_concat_ws.test
# description: CONCAT_WS test
# group: [string]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE strings(a STRING, b STRING)
statement ok
INSERT INTO strings VALUES ('Hello', 'World'), ('HuLlD', NULL), ('MotörHead','RÄcks')
query T
select CONCAT_WS(',',a, 'SUFFIX') FROM strings
----
Hello,SUFFIX
HuLlD,SUFFIX
MotörHead,SUFFIX
query T
select CONCAT_WS('@','PREFIX', b) FROM strings
----
PREFIX@World
PREFIX
PREFIX@RÄcks
query T
select CONCAT_WS('$',a, b) FROM strings
----
Hello$World
HuLlD
MotörHead$RÄcks
query T
select CONCAT_WS(a, b, 'SUFFIX') FROM strings
----
WorldHelloSUFFIX
SUFFIX
RÄcksMotörHeadSUFFIX
query T
select CONCAT_WS(a, b, b) FROM strings
----
WorldHelloWorld
(empty)
RÄcksMotörHeadRÄcks
query T
select CONCAT_WS('@','1', '2', '3', '4', '5', '6', '7', '8', '9')
----
1@2@3@4@5@6@7@8@9
query T
select CONCAT_WS(b, '[', ']') FROM strings ORDER BY a
----
[World]
NULL
[RÄcks]
# filters
query T
select CONCAT_WS(',', a, 'SUFFIX') FROM strings WHERE a != 'Hello'
----
HuLlD,SUFFIX
MotörHead,SUFFIX
# concat WS needs at least two parameters
statement error
select CONCAT_WS()
----
statement error
select CONCAT_WS(',')
----
# one entry: just returns the entry
query T
select CONCAT_WS(',', 'hello')
----
hello
# NULL in separator results in null
query T
select CONCAT_WS(NULL, 'hello')
----
NULL
# NULL in data results in empty string
query T
select CONCAT_WS(',', NULL)
----
(empty)
# NULL separator returns in entire column being NULL
query T
select CONCAT_WS(NULL, b, 'SUFFIX') FROM strings
----
NULL
NULL
NULL
# NULL in separator is just ignored
query T
select CONCAT_WS(',', NULL, 'SUFFIX') FROM strings
----
SUFFIX
SUFFIX
SUFFIX
# empty strings still get split up by the separator
query T
select CONCAT_WS(',', '', '')
----
,
query T
select CONCAT_WS(',', '', '', '')
----
,,
# but NULLs do not
query T
select CONCAT_WS(',', NULL, NULL)
----
(empty)
query T
select CONCAT_WS(',', NULL, NULL, NULL)
----
(empty)
query T
select CONCAT_WS(',', NULL, NULL, 'hello')
----
hello
# now test for non-constant separators
query T
select CONCAT_WS(a, '', NULL, '') FROM strings ORDER BY a
----
Hello
HuLlD
MotörHead
query T
select CONCAT_WS(a, NULL, '', '') FROM strings ORDER BY a;
----
Hello
HuLlD
MotörHead
# now non-constant separator with a mix of constant and non-constant strings to concatenate
query T
select CONCAT_WS(a, NULL, b, '') FROM strings ORDER BY a
----
WorldHello
(empty)
RÄcksMotörHead
|