108 lines
1.9 KiB
SQL
108 lines
1.9 KiB
SQL
# name: test/sql/projection/select_star_like.test
|
|
# description: SELECT * LIKE
|
|
# group: [projection]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE integers(col1 INTEGER, col2 INTEGER, k INTEGER)
|
|
|
|
statement ok
|
|
INSERT INTO integers VALUES (1, 2, 3)
|
|
|
|
query II
|
|
SELECT COLUMNS(lambda x: x LIKE 'col%') FROM integers
|
|
----
|
|
1 2
|
|
|
|
query II
|
|
SELECT * LIKE 'col%' FROM integers
|
|
----
|
|
1 2
|
|
|
|
# not like
|
|
query I
|
|
SELECT * NOT LIKE 'col%' FROM integers
|
|
----
|
|
3
|
|
|
|
# ilike
|
|
query II
|
|
SELECT * ILIKE 'COL%' FROM integers
|
|
----
|
|
1 2
|
|
|
|
# regex
|
|
query II
|
|
SELECT * SIMILAR TO '.*col.*' FROM integers
|
|
----
|
|
1 2
|
|
|
|
# exclude
|
|
query I
|
|
SELECT * EXCLUDE (col1) SIMILAR TO '.*col.*' FROM integers
|
|
----
|
|
2
|
|
|
|
# SIMILAR TO alias can use regex groups
|
|
query II
|
|
SELECT c2, c1 FROM (
|
|
SELECT * SIMILAR TO 'number(\d+)' AS 'c\1' FROM (SELECT 1 AS number1, 2 AS number2, 3 AS end)
|
|
)
|
|
----
|
|
2 1
|
|
|
|
# LIKE
|
|
query I
|
|
SELECT val FROM (
|
|
SELECT * NOT LIKE '%number%' AS val FROM (SELECT 1 AS number1, 2 AS number2, 3 AS end)
|
|
)
|
|
----
|
|
3
|
|
|
|
# ESCAPE
|
|
query I
|
|
SELECT * LIKE '\_%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
|
|
----
|
|
2
|
|
|
|
query I
|
|
SELECT * NOT LIKE '\_%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
|
|
----
|
|
1
|
|
|
|
query I
|
|
SELECT * ILIKE '\_NUM%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
|
|
----
|
|
2
|
|
|
|
query I
|
|
SELECT * NOT ILIKE '\_NUM%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
|
|
----
|
|
1
|
|
|
|
# non-constant pattern
|
|
statement error
|
|
SELECT * SIMILAR TO pattern FROM integers, (SELECT '.*col.*') t(pattern)
|
|
----
|
|
must be a constant
|
|
|
|
# unsupported function
|
|
statement error
|
|
SELECT * + 42 FROM integers
|
|
----
|
|
cannot be applied to a star expression
|
|
|
|
# replace
|
|
statement error
|
|
SELECT * REPLACE (col1 + 42 AS col1) SIMILAR TO '.*col.*' FROM integers
|
|
----
|
|
Replace list cannot be combined with a filtering operation
|
|
|
|
# rename
|
|
statement error
|
|
SELECT * RENAME (col1 AS other_) SIMILAR TO '.*col.*' FROM integers
|
|
----
|
|
Rename list cannot be combined with a filtering operation
|