File: test_concat_ws.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (160 lines) | stat: -rw-r--r-- 2,528 bytes parent folder | download | duplicates (4)
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