十三、 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. 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM