Files
greptimedb/tests/cases/standalone/common/function/string/position.sql
dennis zhuang d8563ba56d feat: adds regex_extract function and more type tests (#7107)
* feat: adds format, regex_extract function and more type tests

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: forgot functions

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* chore: forgot null type

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* test: forgot date type

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* feat: remove format function

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* test: update results after upgrading datafusion

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

---------

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>
2025-10-25 08:41:49 +00:00

85 lines
1.9 KiB
SQL

-- String position/search function tests
-- POSITION function
SELECT POSITION('world' IN 'hello world');
SELECT POSITION('xyz' IN 'hello world');
SELECT POSITION('' IN 'hello world');
SELECT POSITION('world' IN '');
-- STRPOS function (same as POSITION)
SELECT STRPOS('hello world', 'world');
SELECT STRPOS('hello world', 'xyz');
SELECT STRPOS('hello world', 'hello');
SELECT STRPOS('hello world', 'o');
-- INSTR function
SELECT INSTR('hello world', 'world');
SELECT INSTR('hello world', 'o');
SELECT INSTR('hello world', 'xyz');
-- Case sensitive search
SELECT POSITION('WORLD' IN 'hello world');
SELECT POSITION('World' IN 'hello world');
-- LEFT and RIGHT functions
SELECT LEFT('hello world', 5);
SELECT RIGHT('hello world', 5);
-- More than string length
SELECT LEFT('hello', 10);
-- More than string length
SELECT RIGHT('hello', 10);
-- Test with NULL values
SELECT POSITION('world' IN NULL);
SELECT POSITION(NULL IN 'hello world');
SELECT LEFT(NULL, 5);
SELECT RIGHT('hello', NULL);
-- Test with table data
CREATE TABLE position_test(s VARCHAR, "search" VARCHAR, ts TIMESTAMP TIME INDEX);
INSERT INTO position_test VALUES
('hello world', 'world', 1000),
('hello world', 'hello', 2000),
('hello world', 'xyz', 3000),
('programming', 'gram', 4000),
('database', 'base', 5000);
SELECT s, "search", POSITION("search" IN s) AS a, STRPOS(s, "search") AS b FROM position_test ORDER BY ts;
-- Test LEFT and RIGHT with table data
SELECT s, LEFT(s, 5), RIGHT(s, 5) FROM position_test ORDER BY ts;
-- Unicode position tests
SELECT POSITION('' IN 'hello世界');
SELECT POSITION('' IN 'hello世界');
SELECT STRPOS('café shop', 'é');
SELECT LEFT('中文测试', 2);
SELECT RIGHT('中文测试', 2);
-- Multiple occurrences (finds first one)
SELECT POSITION('o' IN 'hello world');
SELECT STRPOS('hello world', 'l');
DROP TABLE position_test;