-- 1.splitByChar(separator, s) 將字符串以‘separator’拆分成多個子串。
-- ‘separator’必須為僅包含一個字符的字符串常量。 返回拆分后的子串的數組。 -- 如果分隔符出現在字符串的開頭或結尾,或者如果有多個連續的分隔符,則將在對應位置填充空的子串。 SELECT splitByChar(',', 'hello,world!'); -- ['hello','world!'] --下面異常:Illegal separator for function splitByChar. Must be exactly one byte. --SELECT splitByChar('or', 'hello,world!');
-- 2.splitByString(separator, s)
-- 與上面相同,但它使用多個字符的字符串作為分隔符。 該字符串必須為非空 SELECT splitByString('or','goodorniceorgreat'); -- ['good','nice','great']
-- 3.alphaTokens(s) 從范圍a-z和A-Z中選擇連續字節的子字符串。返回子字符串數組
SELECT alphaTokens('abca1abc'); -- ['abca','abc'] SELECT alphaTokens('abc1232abc2wer3rtty'); -- ['abc','abc','wer','rtty']
-- 4.數組元素合並函數:arrayStringConcat(arr[, sparator])
-- 使用separator將數組中列出的字符串拼接起來。 -- ‘separator’是一個可選參數:一個常量字符串,默認情況下設置為空字符串。 返回拼接后的字符串 SELECT arrayStringConcat([1,2,3], '-'); -- 出現異常,要求數組必須是字符串string類型的元素 SELECT arrayStringConcat(['one','two','three']); -- onetwothree SELECT arrayStringConcat(['one','two','three'], '-'); -- one-two-three SELECT arrayStringConcat(['one','two','three',''], '-');-- one-two-three- 注意:NULL不能存在arr中
--5.照正則表達式對文本進行分割,分割后返回一個數組:splitByRegexp(regular expression,s)
select splitByRegexp('<[^<>]*>', x) from (select arrayJoin(['<h1>hello<h2>world</h2></h1>', 'gbye<split>bug']) x); SELECT splitByRegexp('<[^<>]*>', x) FROM ( SELECT arrayJoin(['<h1>hello<h2>world</h2></h1>', 'gbye<split>bug']) AS x ) Query id: 2f2e9055-ddfb-4100-b6ea-86606e54e5bf ┌─splitByRegexp('<[^<>]*>', x)─┐ │ ['','hello','world','',''] │ │ ['gbye','bug'] │ └──────────────────────────────┘ 2 rows in set. Elapsed: 0.002 sec.