略微加速

略速 - 互联网笔记

clickhouse字符串拆分合并函数

2022-11-17 leiting (3211阅读)

标签 数据库

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


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3