Files
email-tracker/external/duckdb/test/sql/function/string/test_contains.test
2025-10-24 19:21:19 -05:00

153 lines
2.4 KiB
SQL

# name: test/sql/function/string/test_contains.test
# description: Contains test
# group: [string]
statement ok
PRAGMA enable_verification
# contains of various lengths
query IIIIIIIIII
SELECT CONTAINS('hello world', 'h'),
CONTAINS('hello world', 'he'),
CONTAINS('hello world', 'hel'),
CONTAINS('hello world', 'hell'),
CONTAINS('hello world', 'hello'),
CONTAINS('hello world', 'hello '),
CONTAINS('hello world', 'hello w'),
CONTAINS('hello world', 'hello wo'),
CONTAINS('hello world', 'hello wor'),
CONTAINS('hello world', 'hello worl')
----
1 1 1 1 1 1 1 1 1 1
query IIIIIIIIII
SELECT CONTAINS('hello world', 'a'),
CONTAINS('hello world', 'ha'),
CONTAINS('hello world', 'hea'),
CONTAINS('hello world', 'hela'),
CONTAINS('hello world', 'hella'),
CONTAINS('hello world', 'helloa'),
CONTAINS('hello world', 'hello a'),
CONTAINS('hello world', 'hello wa'),
CONTAINS('hello world', 'hello woa'),
CONTAINS('hello world', 'hello wora')
----
0 0 0 0 0 0 0 0 0 0
# empty contains
query III
select contains('hello', ''), contains('', ''), contains(NULL, '')
----
1 1 NULL
statement ok
CREATE TABLE strings(s VARCHAR, off INTEGER, length INTEGER);
statement ok
INSERT INTO strings VALUES ('hello', 1, 2), ('world', 2, 3), ('b', 1, 1), (NULL, 2, 2)
# Test first letter
query T
SELECT contains(s,'h') FROM strings
----
1
0
0
NULL
# Test second letter
query T
SELECT contains(s,'e') FROM strings
----
1
0
0
NULL
# Test last letter
query T
SELECT contains(s,'d') FROM strings
----
0
1
0
NULL
# Test multiple letters
query T
SELECT contains(s,'he') FROM strings
----
1
0
0
NULL
# Test multiple letters in the middle
query T
SELECT contains(s,'ello') FROM strings
----
1
0
0
NULL
# Test multiple letters at the end
query T
SELECT contains(s,'lo') FROM strings
----
1
0
0
NULL
# Test no match
query T
SELECT contains(s,'he-man') FROM strings
----
0
0
0
NULL
# Test matching needle in multiple rows
query T
SELECT contains(s,'o') FROM strings
----
1
1
0
NULL
# Test NULL constant in different places
query T
SELECT contains(NULL,'o') FROM strings
----
NULL
NULL
NULL
NULL
query T
SELECT contains(s,NULL) FROM strings
----
NULL
NULL
NULL
NULL
statement error
SELECT contains(NULL,NULL) FROM strings
----
Binder Error: Could not choose a best candidate function
# Test empty pattern
query T
SELECT contains(s,'') FROM strings
----
1
1
1
NULL