十三、 clickhouse字符串拆分合并函数
-- 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.