mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-14 01:02:55 +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>
275 lines
9.2 KiB
Plaintext
275 lines
9.2 KiB
Plaintext
-- String TRIM and PAD function tests
|
|
-- TRIM functions
|
|
SELECT TRIM(' hello world ');
|
|
|
|
+--------------------------------+
|
|
| btrim(Utf8(" hello world ")) |
|
|
+--------------------------------+
|
|
| hello world |
|
|
+--------------------------------+
|
|
|
|
SELECT LTRIM(' hello world ');
|
|
|
|
+--------------------------------+
|
|
| ltrim(Utf8(" hello world ")) |
|
|
+--------------------------------+
|
|
| hello world |
|
|
+--------------------------------+
|
|
|
|
SELECT RTRIM(' hello world ');
|
|
|
|
+--------------------------------+
|
|
| rtrim(Utf8(" hello world ")) |
|
|
+--------------------------------+
|
|
| hello world |
|
|
+--------------------------------+
|
|
|
|
-- TRIM with specific characters
|
|
SELECT TRIM('x' FROM 'xxxhello worldxxx');
|
|
|
|
+--------------------------------------------+
|
|
| btrim(Utf8("xxxhello worldxxx"),Utf8("x")) |
|
|
+--------------------------------------------+
|
|
| hello world |
|
|
+--------------------------------------------+
|
|
|
|
SELECT LTRIM('hello world', 'hel');
|
|
|
|
+----------------------------------------+
|
|
| ltrim(Utf8("hello world"),Utf8("hel")) |
|
|
+----------------------------------------+
|
|
| o world |
|
|
+----------------------------------------+
|
|
|
|
SELECT RTRIM('hello world', 'dlr');
|
|
|
|
+----------------------------------------+
|
|
| rtrim(Utf8("hello world"),Utf8("dlr")) |
|
|
+----------------------------------------+
|
|
| hello wo |
|
|
+----------------------------------------+
|
|
|
|
-- PAD functions
|
|
SELECT LPAD('hello', 10, '*');
|
|
|
|
+-----------------------------------------+
|
|
| lpad(Utf8("hello"),Int64(10),Utf8("*")) |
|
|
+-----------------------------------------+
|
|
| *****hello |
|
|
+-----------------------------------------+
|
|
|
|
SELECT RPAD('hello', 10, '*');
|
|
|
|
+-----------------------------------------+
|
|
| rpad(Utf8("hello"),Int64(10),Utf8("*")) |
|
|
+-----------------------------------------+
|
|
| hello***** |
|
|
+-----------------------------------------+
|
|
|
|
-- Truncate
|
|
SELECT LPAD('hello', 3, '*');
|
|
|
|
+----------------------------------------+
|
|
| lpad(Utf8("hello"),Int64(3),Utf8("*")) |
|
|
+----------------------------------------+
|
|
| hel |
|
|
+----------------------------------------+
|
|
|
|
-- Truncate
|
|
SELECT RPAD('hello', 3, '*');
|
|
|
|
+----------------------------------------+
|
|
| rpad(Utf8("hello"),Int64(3),Utf8("*")) |
|
|
+----------------------------------------+
|
|
| hel |
|
|
+----------------------------------------+
|
|
|
|
-- PAD with multi-character padding
|
|
SELECT LPAD('test', 10, 'ab');
|
|
|
|
+-----------------------------------------+
|
|
| lpad(Utf8("test"),Int64(10),Utf8("ab")) |
|
|
+-----------------------------------------+
|
|
| abababtest |
|
|
+-----------------------------------------+
|
|
|
|
SELECT RPAD('test', 10, 'xy');
|
|
|
|
+-----------------------------------------+
|
|
| rpad(Utf8("test"),Int64(10),Utf8("xy")) |
|
|
+-----------------------------------------+
|
|
| testxyxyxy |
|
|
+-----------------------------------------+
|
|
|
|
-- Test with table data
|
|
CREATE TABLE trim_pad_test(s VARCHAR, ts TIMESTAMP TIME INDEX);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO trim_pad_test VALUES
|
|
(' hello ', 1000),
|
|
('world ', 2000),
|
|
(' test', 3000),
|
|
('no-spaces', 4000),
|
|
('', 5000),
|
|
(NULL, 6000);
|
|
|
|
Affected Rows: 6
|
|
|
|
-- Apply TRIM functions to table data
|
|
SELECT s, TRIM(s), LTRIM(s), RTRIM(s) FROM trim_pad_test ORDER BY ts;
|
|
|
|
+-----------+------------------------+------------------------+------------------------+
|
|
| s | btrim(trim_pad_test.s) | ltrim(trim_pad_test.s) | rtrim(trim_pad_test.s) |
|
|
+-----------+------------------------+------------------------+------------------------+
|
|
| hello | hello | hello | hello |
|
|
| world | world | world | world |
|
|
| test | test | test | test |
|
|
| no-spaces | no-spaces | no-spaces | no-spaces |
|
|
| | | | |
|
|
| | | | |
|
|
+-----------+------------------------+------------------------+------------------------+
|
|
|
|
-- Apply PAD functions
|
|
SELECT s, LPAD(TRIM(s), 15, '-'), RPAD(TRIM(s), 15, '+') FROM trim_pad_test WHERE s IS NOT NULL ORDER BY ts;
|
|
|
|
+-----------+--------------------------------------------------+--------------------------------------------------+
|
|
| s | lpad(btrim(trim_pad_test.s),Int64(15),Utf8("-")) | rpad(btrim(trim_pad_test.s),Int64(15),Utf8("+")) |
|
|
+-----------+--------------------------------------------------+--------------------------------------------------+
|
|
| hello | ----------hello | hello++++++++++ |
|
|
| world | ----------world | world++++++++++ |
|
|
| test | -----------test | test+++++++++++ |
|
|
| no-spaces | ------no-spaces | no-spaces++++++ |
|
|
| | --------------- | +++++++++++++++ |
|
|
+-----------+--------------------------------------------------+--------------------------------------------------+
|
|
|
|
-- Test with Unicode characters
|
|
SELECT TRIM(' 中文测试 ');
|
|
|
|
+-----------------------------+
|
|
| btrim(Utf8(" 中文测试 ")) |
|
|
+-----------------------------+
|
|
| 中文测试 |
|
|
+-----------------------------+
|
|
|
|
SELECT LPAD('🚀', 10, '★');
|
|
|
|
+--------------------------------------+
|
|
| lpad(Utf8("🚀"),Int64(10),Utf8("★")) |
|
|
+--------------------------------------+
|
|
| ★★★★★★★★★🚀 |
|
|
+--------------------------------------+
|
|
|
|
SELECT RPAD('café', 8, '•');
|
|
|
|
+---------------------------------------+
|
|
| rpad(Utf8("café"),Int64(8),Utf8("•")) |
|
|
+---------------------------------------+
|
|
| café•••• |
|
|
+---------------------------------------+
|
|
|
|
-- Edge cases
|
|
SELECT TRIM('');
|
|
|
|
+-----------------+
|
|
| btrim(Utf8("")) |
|
|
+-----------------+
|
|
| |
|
|
+-----------------+
|
|
|
|
SELECT TRIM(NULL);
|
|
|
|
+-------------+
|
|
| btrim(NULL) |
|
|
+-------------+
|
|
| |
|
|
+-------------+
|
|
|
|
SELECT LPAD('', 5, '*');
|
|
|
|
+-----------------------------------+
|
|
| lpad(Utf8(""),Int64(5),Utf8("*")) |
|
|
+-----------------------------------+
|
|
| ***** |
|
|
+-----------------------------------+
|
|
|
|
SELECT RPAD('', 5, '*');
|
|
|
|
+-----------------------------------+
|
|
| rpad(Utf8(""),Int64(5),Utf8("*")) |
|
|
+-----------------------------------+
|
|
| ***** |
|
|
+-----------------------------------+
|
|
|
|
SELECT LPAD('test', 0, '*');
|
|
|
|
+---------------------------------------+
|
|
| lpad(Utf8("test"),Int64(0),Utf8("*")) |
|
|
+---------------------------------------+
|
|
| |
|
|
+---------------------------------------+
|
|
|
|
SELECT RPAD('test', 0, '*');
|
|
|
|
+---------------------------------------+
|
|
| rpad(Utf8("test"),Int64(0),Utf8("*")) |
|
|
+---------------------------------------+
|
|
| |
|
|
+---------------------------------------+
|
|
|
|
-- TRIM with various whitespace characters
|
|
SELECT TRIM('\t\nhello\r\n\t');
|
|
|
|
+--------------------------------+
|
|
| btrim(Utf8("\t\nhello\r\n\t")) |
|
|
+--------------------------------+
|
|
| \t\nhello\r\n\t |
|
|
+--------------------------------+
|
|
|
|
SELECT LTRIM('\t\nhello world');
|
|
|
|
+--------------------------------+
|
|
| ltrim(Utf8("\t\nhello world")) |
|
|
+--------------------------------+
|
|
| \t\nhello world |
|
|
+--------------------------------+
|
|
|
|
SELECT RTRIM('hello world\r\n');
|
|
|
|
+--------------------------------+
|
|
| rtrim(Utf8("hello world\r\n")) |
|
|
+--------------------------------+
|
|
| hello world\r\n |
|
|
+--------------------------------+
|
|
|
|
-- Custom TRIM characters
|
|
CREATE TABLE custom_trim(s VARCHAR, ts TIMESTAMP TIME INDEX);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO custom_trim VALUES
|
|
('***hello***', 1000),
|
|
('---world---', 2000),
|
|
('abcTESTabc', 3000);
|
|
|
|
Affected Rows: 3
|
|
|
|
SELECT s, TRIM('*' FROM s), TRIM('-' FROM s), TRIM('abc' FROM s) FROM custom_trim ORDER BY ts;
|
|
|
|
+-------------+--------------------------------+--------------------------------+----------------------------------+
|
|
| s | btrim(custom_trim.s,Utf8("*")) | btrim(custom_trim.s,Utf8("-")) | btrim(custom_trim.s,Utf8("abc")) |
|
|
+-------------+--------------------------------+--------------------------------+----------------------------------+
|
|
| ***hello*** | hello | ***hello*** | ***hello*** |
|
|
| ---world--- | ---world--- | world | ---world--- |
|
|
| abcTESTabc | abcTESTabc | abcTESTabc | TEST |
|
|
+-------------+--------------------------------+--------------------------------+----------------------------------+
|
|
|
|
DROP TABLE trim_pad_test;
|
|
|
|
Affected Rows: 0
|
|
|
|
DROP TABLE custom_trim;
|
|
|
|
Affected Rows: 0
|
|
|