Files
email-tracker/external/duckdb/test/sql/projection/test_complex_expressions.test
2025-10-24 19:21:19 -05:00

205 lines
2.7 KiB
SQL

# name: test/sql/projection/test_complex_expressions.test
# description: Complex Expressions
# group: [projection]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE exprtest (a INTEGER, b INTEGER)
statement ok
INSERT INTO exprtest VALUES (42, 10), (43, 100), (NULL, 1), (45, -1)
query II
SELECT * FROM exprtest
----
42 10
43 100
NULL 1
45 -1
# BETWEEN
query I
SELECT a FROM exprtest WHERE a BETWEEN 43 AND 44
----
43
query I
SELECT a FROM exprtest WHERE a NOT BETWEEN 43 AND 44
----
42
45
query I
SELECT a FROM exprtest WHERE a BETWEEN b AND 44
----
42
# CASE
query I
SELECT CASE a WHEN 42 THEN 100 WHEN 43 THEN 200 ELSE 300 END FROM exprtest
----
100
200
300
300
query I
SELECT CASE WHEN a = 42 THEN 100 WHEN a = 43 THEN 200 ELSE 300 END FROM exprtest
----
100
200
300
300
query I
SELECT CASE WHEN a = 42 THEN 100 WHEN a = 43 THEN 200 END FROM exprtest
----
100
200
NULL
NULL
# ABS
query III
SELECT ABS(1), ABS(-1), ABS(NULL)
----
1 1 NULL
query I
SELECT ABS(b) FROM exprtest
----
10
100
1
1
# IN
statement ok
CREATE TABLE intest (a INTEGER, b INTEGER, c INTEGER)
statement ok
INSERT INTO intest VALUES (42, 42, 42), (43, 42, 42), (44, 41, 44);
query III
SELECT * FROM intest WHERE a IN (42, 43)
----
42 42 42
43 42 42
query T
SELECT a IN (42, 43) FROM intest
----
1
1
0
query III
SELECT * FROM intest WHERE a IN (86, 103, 162)
----
query III
SELECT * FROM intest WHERE a IN (NULL, NULL, NULL, NULL)
----
query III
SELECT * FROM intest WHERE a IN (b)
----
42 42 42
query III
SELECT * FROM intest WHERE a IN (b, c)
----
42 42 42
44 41 44
query III
SELECT * FROM intest WHERE a IN (43, b) ORDER BY 1
----
42 42 42
43 42 42
query III
SELECT * FROM intest WHERE a NOT IN (42, 43)
----
44 41 44
query III
SELECT * FROM intest WHERE a NOT IN (86, 103, 162) ORDER BY 1
----
42 42 42
43 42 42
44 41 44
query III
SELECT * FROM intest WHERE a NOT IN (NULL, NULL)
----
query III
SELECT * FROM intest WHERE a NOT IN (b) ORDER BY 1
----
43 42 42
44 41 44
query III
SELECT * FROM intest WHERE a NOT IN (b, c)
----
43 42 42
query III
SELECT * FROM intest WHERE a NOT IN (43, b)
----
44 41 44
query III
SELECT * FROM intest WHERE NULL IN ('a', 'b')
----
query III
SELECT * FROM intest WHERE NULL NOT IN ('a', 'b')
----
statement ok
CREATE TABLE strtest (a INTEGER, b VARCHAR)
statement ok
INSERT INTO strtest VALUES (1, 'a'), (2, 'h'), (3, 'd')
statement ok
INSERT INTO strtest VALUES (4, NULL)
query I
SELECT a FROM strtest WHERE b = 'a'
----
1
query I
SELECT a FROM strtest WHERE b <> 'a'
----
2
3
query I
SELECT a FROM strtest WHERE b < 'h'
----
1
3
query I
SELECT a FROM strtest WHERE b <= 'h'
----
1
2
3
query I
SELECT a FROM strtest WHERE b > 'h'
----
query I
SELECT a FROM strtest WHERE b >= 'h'
----
2