-- 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