mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-14 17:23:09 +00:00
* 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>
94 lines
2.0 KiB
SQL
94 lines
2.0 KiB
SQL
-- String case conversion function tests
|
|
|
|
-- Basic UPPER and LOWER functions
|
|
SELECT UPPER('hello world');
|
|
|
|
SELECT LOWER('HELLO WORLD');
|
|
|
|
SELECT UPPER('MiXeD cAsE');
|
|
|
|
SELECT LOWER('MiXeD cAsE');
|
|
|
|
-- INITCAP (capitalize first letter of each word)
|
|
SELECT INITCAP('hello world');
|
|
|
|
SELECT INITCAP('HELLO WORLD');
|
|
|
|
SELECT INITCAP('mIxEd CaSe TeSt');
|
|
|
|
-- Test with NULL
|
|
SELECT UPPER(NULL);
|
|
|
|
SELECT LOWER(NULL);
|
|
|
|
SELECT INITCAP(NULL);
|
|
|
|
-- Test with numbers and special characters
|
|
SELECT UPPER('hello123!@#');
|
|
|
|
SELECT LOWER('HELLO123!@#');
|
|
|
|
SELECT INITCAP('hello-world_test');
|
|
|
|
-- Test with table data
|
|
CREATE TABLE case_test("name" VARCHAR, city VARCHAR, ts TIMESTAMP TIME INDEX);
|
|
|
|
INSERT INTO case_test VALUES
|
|
('john doe', 'new york', 1000),
|
|
('JANE SMITH', 'LOS ANGELES', 2000),
|
|
('Bob Wilson', 'Chicago', 3000),
|
|
('alice johnson', 'BOSTON', 4000);
|
|
|
|
-- Apply case functions to table data
|
|
SELECT "name", UPPER("name"), LOWER("name"), INITCAP("name") FROM case_test ORDER BY ts;
|
|
|
|
SELECT city, UPPER(city), LOWER(city), INITCAP(city) FROM case_test ORDER BY ts;
|
|
|
|
-- Combined case operations
|
|
SELECT INITCAP(LOWER("name")) as formatted_name FROM case_test ORDER BY ts;
|
|
|
|
-- Unicode case conversion
|
|
SELECT UPPER('café');
|
|
|
|
SELECT LOWER('CAFÉ');
|
|
|
|
-- German characters
|
|
SELECT UPPER('äöüß');
|
|
|
|
-- German uppercase
|
|
SELECT LOWER('ÄÖÜ');
|
|
|
|
-- Greek letters
|
|
SELECT UPPER('αβγ');
|
|
|
|
SELECT LOWER('ΑΒΓ');
|
|
|
|
-- Test with empty string
|
|
SELECT UPPER('');
|
|
|
|
SELECT LOWER('');
|
|
|
|
SELECT INITCAP('');
|
|
|
|
-- Test with single characters
|
|
SELECT UPPER('a'), UPPER('A'), UPPER('1'), UPPER(' ');
|
|
|
|
SELECT LOWER('a'), LOWER('A'), LOWER('1'), LOWER(' ');
|
|
|
|
SELECT INITCAP('a'), INITCAP('A'), INITCAP('1');
|
|
|
|
-- Complex Unicode examples
|
|
CREATE TABLE unicode_case(s VARCHAR, ts TIMESTAMP TIME INDEX);
|
|
|
|
INSERT INTO unicode_case VALUES
|
|
('hello 世界', 1000),
|
|
('HELLO 世界', 2000),
|
|
('café à paris', 3000),
|
|
('CAFÉ À PARIS', 4000);
|
|
|
|
SELECT s, UPPER(s), LOWER(s), INITCAP(s) FROM unicode_case ORDER BY ts;
|
|
|
|
DROP TABLE case_test;
|
|
|
|
DROP TABLE unicode_case;
|