mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-13 08:43:00 +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>
212 lines
7.3 KiB
Plaintext
212 lines
7.3 KiB
Plaintext
-- String concatenation function tests
|
|
-- Test CONCAT function
|
|
-- Basic concatenation
|
|
SELECT CONCAT('hello', 'world');
|
|
|
|
+-------------------------------------+
|
|
| concat(Utf8("hello"),Utf8("world")) |
|
|
+-------------------------------------+
|
|
| helloworld |
|
|
+-------------------------------------+
|
|
|
|
SELECT CONCAT('hello', ' ', 'world');
|
|
|
|
+-----------------------------------------------+
|
|
| concat(Utf8("hello"),Utf8(" "),Utf8("world")) |
|
|
+-----------------------------------------------+
|
|
| hello world |
|
|
+-----------------------------------------------+
|
|
|
|
SELECT CONCAT('a', 'b', 'c', 'd');
|
|
|
|
+-------------------------------------------------+
|
|
| concat(Utf8("a"),Utf8("b"),Utf8("c"),Utf8("d")) |
|
|
+-------------------------------------------------+
|
|
| abcd |
|
|
+-------------------------------------------------+
|
|
|
|
-- Concatenation with NULL values
|
|
SELECT CONCAT('hello', NULL);
|
|
|
|
+----------------------------+
|
|
| concat(Utf8("hello"),NULL) |
|
|
+----------------------------+
|
|
| hello |
|
|
+----------------------------+
|
|
|
|
SELECT CONCAT(NULL, 'world');
|
|
|
|
+----------------------------+
|
|
| concat(NULL,Utf8("world")) |
|
|
+----------------------------+
|
|
| world |
|
|
+----------------------------+
|
|
|
|
SELECT CONCAT(NULL, NULL);
|
|
|
|
+-------------------+
|
|
| concat(NULL,NULL) |
|
|
+-------------------+
|
|
| |
|
|
+-------------------+
|
|
|
|
-- Concatenation with numbers (should convert to string)
|
|
SELECT CONCAT('value: ', 42);
|
|
|
|
+-----------------------------------+
|
|
| concat(Utf8("value: "),Int64(42)) |
|
|
+-----------------------------------+
|
|
| value: 42 |
|
|
+-----------------------------------+
|
|
|
|
SELECT CONCAT(1, 2, 3);
|
|
|
|
+------------------------------------+
|
|
| concat(Int64(1),Int64(2),Int64(3)) |
|
|
+------------------------------------+
|
|
| 123 |
|
|
+------------------------------------+
|
|
|
|
-- Test with table data
|
|
CREATE TABLE concat_test(first_name VARCHAR, last_name VARCHAR, age INTEGER, ts TIMESTAMP TIME INDEX);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO concat_test VALUES
|
|
('John', 'Doe', 30, 1000),
|
|
('Jane', 'Smith', 25, 2000),
|
|
('Bob', NULL, 35, 3000),
|
|
(NULL, 'Wilson', 40, 4000);
|
|
|
|
Affected Rows: 4
|
|
|
|
-- Concatenate table columns
|
|
SELECT CONCAT(first_name, ' ', last_name) as full_name FROM concat_test ORDER BY ts;
|
|
|
|
+------------+
|
|
| full_name |
|
|
+------------+
|
|
| John Doe |
|
|
| Jane Smith |
|
|
| Bob |
|
|
| Wilson |
|
|
+------------+
|
|
|
|
SELECT CONCAT(first_name, ' is ', age, ' years old') FROM concat_test ORDER BY ts;
|
|
|
|
+--------------------------------------------------------------------------------+
|
|
| concat(concat_test.first_name,Utf8(" is "),concat_test.age,Utf8(" years old")) |
|
|
+--------------------------------------------------------------------------------+
|
|
| John is 30 years old |
|
|
| Jane is 25 years old |
|
|
| Bob is 35 years old |
|
|
| is 40 years old |
|
|
+--------------------------------------------------------------------------------+
|
|
|
|
-- Test CONCAT_WS (concat with separator)
|
|
SELECT CONCAT_WS(' ', first_name, last_name) as full_name FROM concat_test ORDER BY ts;
|
|
|
|
+------------+
|
|
| full_name |
|
|
+------------+
|
|
| John Doe |
|
|
| Jane Smith |
|
|
| Bob |
|
|
| Wilson |
|
|
+------------+
|
|
|
|
SELECT CONCAT_WS('-', first_name, last_name, age) FROM concat_test ORDER BY ts;
|
|
|
|
+-----------------------------------------------------------------------------------+
|
|
| concat_ws(Utf8("-"),concat_test.first_name,concat_test.last_name,concat_test.age) |
|
|
+-----------------------------------------------------------------------------------+
|
|
| John-Doe-30 |
|
|
| Jane-Smith-25 |
|
|
| Bob-35 |
|
|
| Wilson-40 |
|
|
+-----------------------------------------------------------------------------------+
|
|
|
|
SELECT CONCAT_WS(',', 'a', 'b', 'c', 'd');
|
|
|
|
+--------------------------------------------------------------+
|
|
| concat_ws(Utf8(","),Utf8("a"),Utf8("b"),Utf8("c"),Utf8("d")) |
|
|
+--------------------------------------------------------------+
|
|
| a,b,c,d |
|
|
+--------------------------------------------------------------+
|
|
|
|
-- CONCAT_WS with NULL values (should skip NULLs)
|
|
SELECT CONCAT_WS(' ', 'hello', NULL, 'world');
|
|
|
|
+-------------------------------------------------------+
|
|
| concat_ws(Utf8(" "),Utf8("hello"),NULL,Utf8("world")) |
|
|
+-------------------------------------------------------+
|
|
| hello world |
|
|
+-------------------------------------------------------+
|
|
|
|
SELECT CONCAT_WS('|', first_name, last_name) FROM concat_test ORDER BY ts;
|
|
|
|
+-------------------------------------------------------------------+
|
|
| concat_ws(Utf8("|"),concat_test.first_name,concat_test.last_name) |
|
|
+-------------------------------------------------------------------+
|
|
| John|Doe |
|
|
| Jane|Smith |
|
|
| Bob |
|
|
| Wilson |
|
|
+-------------------------------------------------------------------+
|
|
|
|
-- Test pipe operator ||
|
|
SELECT 'hello' || 'world';
|
|
|
|
+--------------------------------+
|
|
| Utf8("hello") || Utf8("world") |
|
|
+--------------------------------+
|
|
| helloworld |
|
|
+--------------------------------+
|
|
|
|
SELECT 'hello' || ' ' || 'world';
|
|
|
|
+---------------------------------------------+
|
|
| Utf8("hello") || Utf8(" ") || Utf8("world") |
|
|
+---------------------------------------------+
|
|
| hello world |
|
|
+---------------------------------------------+
|
|
|
|
SELECT first_name || ' ' || last_name FROM concat_test WHERE first_name IS NOT NULL AND last_name IS NOT NULL ORDER BY ts;
|
|
|
|
+--------------------------------------------------------------+
|
|
| concat_test.first_name || Utf8(" ") || concat_test.last_name |
|
|
+--------------------------------------------------------------+
|
|
| John Doe |
|
|
| Jane Smith |
|
|
+--------------------------------------------------------------+
|
|
|
|
-- Unicode concatenation
|
|
SELECT CONCAT('Hello ', '世界');
|
|
|
|
+-------------------------------------+
|
|
| concat(Utf8("Hello "),Utf8("世界")) |
|
|
+-------------------------------------+
|
|
| Hello 世界 |
|
|
+-------------------------------------+
|
|
|
|
SELECT CONCAT('🚀', ' ', '🌟');
|
|
|
|
+-----------------------------------------+
|
|
| concat(Utf8("🚀"),Utf8(" "),Utf8("🌟")) |
|
|
+-----------------------------------------+
|
|
| 🚀 🌟 |
|
|
+-----------------------------------------+
|
|
|
|
SELECT '中文' || '🐄';
|
|
|
|
+----------------------------+
|
|
| Utf8("中文") || Utf8("🐄") |
|
|
+----------------------------+
|
|
| 中文🐄 |
|
|
+----------------------------+
|
|
|
|
DROP TABLE concat_test;
|
|
|
|
Affected Rows: 0
|
|
|