ClickHouse 字符串操作函数

字符串操作函数

本文主要涉及 ClickHouse 中用于字符串操作的函数功能和语法,在字符串中搜索与替换可参考:ClickHouse 字符串搜索函数ClickHouse 字符串替换函数 。


1. empty

检查输入字符串是否为空。如果字符串至少包含一个字节(即使是空格或空字节),则认为字符串非空。该函数也适用于数组和 UUID。

语法:

参数:

  • x — 输入值。类型为字符串。

返回值:

  • 如果是空字符串,返回 1;否则返回 0。类型为 UInt8

示例:

SELECT empty('');

结果:

┌─empty('')─┐
│         1 │
└───────────┘

2. notEmpty

检查输入字符串是否非空。如果字符串至少包含一个字节(即使是空格或空字节),则认为字符串非空。该函数也适用于数组和 UUID。

语法:

参数:

  • x — 输入值。类型为字符串。

返回值:

  • 如果是非空字符串,返回 1;否则返回 0。类型为 UInt8

示例:

SELECT notEmpty('text');

结果:

┌─notEmpty('text')─┐
│                1 │
└──────────────────┘

3. length

返回字符串的长度(以字节为单位),而不是字符或 Unicode 码点的数量。该函数也适用于数组。

别名: OCTET_LENGTH

语法:

参数:

  • s — 输入字符串或数组。类型为字符串或数组。

返回值:

  • 字符串或数组 s 的长度(以字节为单位)。类型为 UInt64

示例:

SELECT length('Hello, world!');

结果:

┌─length('Hello, world!')─┐
│                      13 │
└─────────────────────────┘

4. lengthUTF8

返回字符串的长度(以 Unicode 码点为单位),而不是字节或字符的数量。假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,不会抛出异常,结果未定义。

别名: CHAR_LENGTHCHARACTER_LENGTH

语法:

参数:

  • s — 包含有效 UTF-8 编码文本的字符串。类型为字符串。

返回值:

  • 字符串 s 的长度(以 Unicode 码点为单位)。类型为 UInt64

示例:

SELECT lengthUTF8('Здравствуй, мир!');

结果:

┌─lengthUTF8('Здравствуй, мир!')─┐
│                             16 │
└────────────────────────────────┘

5. left

返回字符串 s 的子字符串,从左侧开始指定的 offset

语法:

参数:

  • s — 要计算子字符串的字符串。类型为字符串或 FixedString。

  • offset — 偏移量的字节数。类型为 UInt*

返回值:

  • 如果 offset 为正数:从字符串左侧开始的 offset 字节的子字符串。

  • 如果 offset 为负数:从字符串左侧开始的 length(s) - |offset| 字节的子字符串。

  • 如果长度为 0,则返回空字符串。

示例:

SELECT left('Hello', 3);

结果:

Hel

6. leftUTF8

返回 UTF-8 编码字符串 s 的子字符串,从左侧开始指定的 offset

语法:

参数:

  • s — 要计算子字符串的 UTF-8 编码字符串。类型为字符串或 FixedString。

  • offset — 偏移量的字节数。类型为 UInt*

返回值:

  • 如果 offset 为正数:从字符串左侧开始的 offset 字节的子字符串。

  • 如果 offset 为负数:从字符串左侧开始的 length(s) - |offset| 字节的子字符串。

  • 如果长度为 0,则返回空字符串。

示例:

SELECT leftUTF8('Привет', 4);

结果:

Прив

结果:


7. leftPad

从左侧用空格或指定的字符串(如有需要,可重复多次)填充字符串,直到结果字符串达到指定的 length

语法:

leftPad(string, length[, pad_string])

别名: LPAD

参数:

  • string — 要填充的输入字符串。类型为字符串。

  • length — 结果字符串的长度。类型为 UIntInt。如果该值小于输入字符串的长度,则输入字符串将被缩短为 length 字符。

  • pad_string — 用于填充输入字符串的字符串。类型为字符串。可选参数。如果未指定,则输入字符串将用空格填充。

返回值:

  • 给定长度的左填充字符串。类型为字符串。

示例:

SELECT leftPad('abc', 7, '*'), leftPad('def', 7);

结果:

┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc                │     def           │
└────────────────────────┴───────────────────┘

8. leftPadUTF8

从左侧用空格或指定的字符串(如有需要,可重复多次)填充字符串,直到结果字符串达到指定的 length。与 leftPad 不同,leftPadUTF8 以码点为单位测量字符串长度,而不是以字节为单位。

语法:

leftPadUTF8(string, length[, pad_string])

参数:

  • string — 要填充的输入字符串。类型为字符串。

  • length — 结果字符串的长度。类型为 UIntInt。如果该值小于输入字符串的长度,则输入字符串将被缩短为 length 字符。

  • pad_string — 用于填充输入字符串的字符串。类型为字符串。可选参数。如果未指定,则输入字符串将用空格填充。

返回值:

  • 给定长度的左填充字符串。类型为字符串。

示例:

SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7);

结果:

┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг                     │    дежз                │
└─────────────────────────────┴────────────────────────┘

9. right

返回字符串 s 的子字符串,从右侧开始指定的 offset

语法:

参数:

  • s — 要计算子字符串的字符串。类型为字符串或 FixedString。

  • offset — 偏移量的字节数。类型为 UInt*

返回值:

  • 如果 offset 为正数:从字符串右侧开始的 offset 字节的子字符串。

  • 如果 offset 为负数:从字符串右侧开始的 length(s) - |offset| 字节的子字符串。

  • 如果长度为 0,则返回空字符串。

示例:

SELECT right('Hello', 3);

结果:

llo

结果:


10. rightUTF8

返回 UTF-8 编码字符串 s 的子字符串,从右侧开始指定的 offset

语法:

参数:

  • s — 要计算子字符串的 UTF-8 编码字符串。类型为字符串或 FixedString。

  • offset — 偏移量的字节数。类型为 UInt*

返回值:

  • 如果 offset 为正数:从字符串右侧开始的 offset 字节的子字符串。

  • 如果 offset 为负数:从字符串右侧开始的 length(s) - |offset| 字节的子字符串。

  • 如果长度为 0,则返回空字符串。

示例:

SELECT rightUTF8('Привет', 4);

结果:

ивет

结果:


11. rightPad

从右侧用空格或指定的字符串(如有需要,可重复多次)填充字符串,直到结果字符串达到指定的 length

语法:

rightPad(string, length[, pad_string])

别名: RPAD

参数:

  • string — 要填充的输入字符串。类型为字符串。

  • length — 结果字符串的长度。类型为 UIntInt。如果该值小于输入字符串的长度,则输入字符串将被缩短为 length 字符。

  • pad_string — 用于填充输入字符串的字符串。类型为字符串。可选参数。如果未指定,则输入字符串将用空格填充。

返回值:

  • 给定长度的右填充字符串。类型为字符串。

示例:

SELECT rightPad('abc', 7, '*'), rightPad('abc', 7);

结果:

┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc****                 │ abc                │
└─────────────────────────┴────────────────────┘

12. rightPadUTF8

从右侧用空格或指定的字符串(如有需要,可重复多次)填充字符串,直到结果字符串达到指定的 length。与 rightPad 不同,rightPadUTF8 以码点为单位测量字符串长度,而不是以字节为单位。

语法:

rightPadUTF8(string, length[, pad_string])

参数:

  • string — 要填充的输入字符串。类型为字符串。

  • length — 结果字符串的长度。类型为 UIntInt。如果该值小于输入字符串的长度,则输入字符串将被缩短为 length 字符。

  • pad_string — 用于填充输入字符串的字符串。类型为字符串。可选参数。如果未指定,则输入字符串将用空格填充。

返回值:

  • 给定长度的右填充字符串。类型为字符串。

示例:

SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7);

结果:

┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг***                      │ абвг                    │
└──────────────────────────────┴─────────────────────────┘

13. lower

将字符串中的 ASCII 拉丁字符转换为小写。

语法:

别名: lcase

参数:

  • input — 输入字符串。类型为字符串。

返回值:

  • 转换为小写的字符串。类型为字符串。

示例:

SELECT lower('CLICKHOUSE');

结果:

┌─lower('CLICKHOUSE')─┐
│ clickhouse          │
└─────────────────────┘

14. upper

将字符串中的 ASCII 拉丁字符转换为大写。

语法:

别名: ucase

参数:

  • input — 输入字符串。类型为字符串。

返回值:

  • 转换为大写的字符串。类型为字符串。

示例:

SELECT upper('clickhouse');

结果:

┌─upper('clickhouse')─┐
│ CLICKHOUSE          │
└─────────────────────┘

15. lowerUTF8

将字符串转换为小写,假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值