六、clickhouse字符串函数
-- 1.字符串长度
SELECT
length('hello world') as str_length, -- 按照Unicode编码计算长度“你好”的长度为6
empty('hello world'),-- 判断字符串是否为空,空为1,⾮空为0
notEmpty('hello world'),
字符串长度怎么判断lengthUTF8('hello world'), -- 按照实际字符计算长度“你好”为2
char_length('hello world'), -- 同 lengthUTF8()
character_length('hello world'), -- 同 lengthUTF8(),
lower('abcd123--'),--字母全部⼩写(将字符串中的ASCII转换为⼩写。)
upper('abcd123--'),--字母全部⼤写(将字符串中的ASCII转换为⼤写。)
lowerUTF8('abcd123-/*\8asd-\\'), -- abcd123-/*8asd-\
upperUTF8('abcd123--'), -- ABCD123--
isValidUTF8('abcd123--/*\*'); --检查字符串是否为有效的UTF-8编码,是则返回1,否则返回0。
SELECT notEmpty(''), notEmpty(NULL), notEmpty('he'); -- 0,空,1
SELECT toValidUTF8('\x61\xF0\x80\x80\x80b');
-- reverseUTF8():以Unicode字符为单位反转UTF-8编码的字符串。如果字符串不是UTF-8编码,则可能获取到⼀个⾮预期的结果(不会抛出异常)
SELECT reverse('abcdefg'), reverseUTF8('abcdefg');
-- 2.字符串维度⾃定义安排
SELECT format('{1} {0} {1}', 'World', 'Hello'); -- 输出:Hello World Hello
SELECT format('{0} {0} {1} {1}', 'one', 'two'); -- 输出:one one two two
SELECT format('{} {}', 'Hello', 'World'); -- 输出:Hello World
-- 3.字符串拼接 concat(s1,s2,s3,...)
SELECT concat('Hello','','World', '!');-- Hello World!
-- 与concat相同,区别在于,你需要保证concat(s1, s2, s3) -> s4是单射的,它将⽤于GROUP BY的优化。
SELECT concatAssumeInjective('Hello','','World', '!');-- Hello World!
-- 4.字符串截取:substring(s, offset, length), mid(s, offset, length), substr(s, offset, length)
-- 以字节为单位截取指定位置字符串,返回以‘offset’位置为开头,长度为‘length’的⼦串。‘offset’从1开始(与标准SQL相同)。‘offset’和‘length’参数必须是常量。SELECT
substring('abcdefg', 1, 3),-- abc
substring('你好,世界', 1, 3),-- 你
substringUTF8('你好,世界', 1, 3); -- 你好,
-- 5.字符串拼接:appendTrailingCharIfAbsent(s, c)
-- 如果‘s’字符串⾮空并且末尾不包含‘c’字符,则将‘c’字符附加到末尾。
SELECT
appendTrailingCharIfAbsent('good','c'), -- goodc
appendTrailingCharIfAbsent('goodccc','c'); -- goodccc
-- 6.字符串编码转换:convertCharset(s, from, to) 返回从‘from’中的编码转换为‘to’中的编码的字符串‘s’。
SELECT
convertCharset('hello', 'UTF8','Unicode'),-- ��h
convertCharset('hello', 'Unicode', 'UTF8'),-- 桥汬�
convertCharset('hello', 'Unicode', 'ASCII'),--
convertCharset('hello', 'ascii', 'ascii'),--hello
convertCharset('hello', 'UTF8','UTF8');-- hello
SELECT
base64Encode('username+password'),-- dXNlcm5hbWUrcGFzc3dvcmQ=
base64Decode('dXNlcm5hbWUrcGFzc3dvcmQ='), -- username+password
-- 使⽤base64将字符串解码成原始字符串。但如果出现错误,将返回空字符串。
tryBase64Decode('dXNlcm5hbWUrcGFzc3dvcmQ=');
-- 7.判断字符串是否已什么结尾或结束,返回1:true,0:flase
-- endsWith(s, suffix) 返回是否以指定的后缀结尾。如果字符串以指定的后缀结束,则返回1,否则返回0 -- startWith(s, prefix) 返回是否以指定的前缀开头。如果字符串以指定的前缀开头,则返回1,否则返回0。SELECT
endsWith('string','g'),
startsWith('string', 'str'); -- 1 true
-- 8.删除左侧空⽩字符
-- trimLeft(s) 返回⼀个字符串,⽤于删除左侧的空⽩字符
-- trimRight(s) 返回⼀个字符串,⽤于删除右侧的空⽩字符
-- trimBoth(s) 返回⼀个字符串,⽤于删除左侧和右侧的空⽩字符
SELECT
trimLeft(' sdfdgs'), -- sdfdgs
trimRight('abcd '), -- abcd
trimBoth(' abcd '); -- abcd

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。