205 lines
2.7 KiB
SQL
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
|
|
|