编码函数
char
返回长度为传递参数数量的字符串,并且每个字节都有对应参数的值。接受数字Numeric类型的多个参数。如果参数的值超出了UInt8数据类型的范围,则将其转换为UInt8,并可能进行舍入和溢出。
语法
参数
返回值
- 给定字节数的字符串。
类型: String
。
示例
查询:
结果:
你可以通过传递相应的字节来构造任意编码的字符串。 这是UTF-8的示例:
查询:
结果:
查询:
结果:
hex
返回包含参数的十六进制表示的字符串。
别名为: HEX
。
语法
该函数使用大写字母A-F
,不使用任何前缀(如0x
)或后缀(如h
)
对于整数参数,它从高到低(大端或“人类可读”顺序)打印十六进制数字(“半字节”)。它从左侧第一个非零字节开始(省略前导零字节),但即使前导数字为零,也始终打印每个字节的两个数字。
类型为Date和DateTime的值将被格式化为相应的整数(日期为 Epoch 以来的天数,DateTime 为 Unix Timestamp 的值)。
对于String和FixedString,所有字节都被简单地编码为两个十六进制数字。零字节不会被省略。
类型为Float和Decimal的值被编码为它们在内存中的表示。由于我们支持小端架构,它们以小端编码。零前导尾随字节不会被省略。
类型为UUID的值被编码为大端顺序字符串。
参数
返回值
- 具有参数的十六进制表示的字符串。
类型为:String。
示例
查询语句:
结果:
查询语句:
结果:
查询语句:
结果:
查询语句:
结果:
unhex
执行hex函数的相反操作。它将每对十六进制数字(在参数中)解释为一个数字,并将其转换为该数字表示的字节。返回值是一个二进制字符串 (BLOB)。
如果要将结果转换为数字,可以使用 reverse 和 reinterpretAs<Type> 函数。
:::注意
如果从 clickhouse-client
中调用 unhex
,二进制字符串将使用 UTF-8 显示。
:::
别名为:UNHEX
。
语法
参数
arg
— 包含任意数量的十六进制数字的字符串。类型为:String,FixedString。
支持大写和小写字母A-F。十六进制数字的数量不必是偶数。如果是奇数,则最后一位数被解释为00-0F字节的低位。如果参数字符串包含除十六进制数字以外的任何内容,则返回一些实现定义的结果(不抛出异常)。对于数字参数, unhex()不执行 hex(N) 的倒数。
返回值
- 二进制字符串 (BLOB)。
类型为: String。
示例
查询语句:
结果:
查询语句:
结果:
bin
返回一个包含参数二进制表示的字符串。
语法
别名为: BIN
。
对于整数参数,它从最高有效到最低有效(大端或“人类可读”顺序)打印 bin 数字。它从最重要的非零字节开始(省略前导零字节),但如果前导数字为零,则始终打印每个字节的八位数字。
类型为Date和DateTime的值被格式化为相应的整数(Date
为 Epoch 以来的天数,DateTime
为 Unix Timestamp 的值)。
对于String和FixedString,所有字节都被简单地编码为八个二进制数。零字节不会被省略。
类型为Float和Decimal的值被编码为它们在内存中的表示。由于我们支持小端架构,它们以小端编码。零前导尾随字节不会被省略。
类型为UUID的值被编码为大端顺序字符串。
参数
返回值
- 具有参数的二进制表示的字符串。
类型为: String。
示例
查询语句:
结果:
查询语句:
结果:
查询语句:
结果:
查询语句:
结果:
unbin
将每对二进制数字(在参数中)解释为一个数字,并将其转换为该数字表示的字节。这些函数执行与 bin 相反的操作。
语法
别名为: UNBIN
。
对于数字参数,unbin()
不会返回 bin()
的倒数。如果要将结果转换为数字,可以使用reverse 和 reinterpretAs<Type> 函数。
如果从 clickhouse-client
中调用 unbin
,则使用 UTF-8 显示二进制字符串。
支持二进制数字0
和1
。二进制位数不必是八的倍数。如果参数字符串包含二进制数字以外的任何内容,则返回一些实现定义的结果(不抛出异常)。
参数
arg
— 包含任意数量的二进制数字的字符串。类型为String。
返回值
- 二进制字符串 (BLOB)。
类型为:String。
示例
查询语句:
结果:
查询语句:
结果:
UUIDStringToNum(str)
接受包含36个字符的字符串,格式为«123e4567-e89b-12d3-a456-426655440000»,并将其转化为FixedString(16)返回。
UUIDNumToString(str)
接受FixedString(16)值。返回包含36个字符的文本格式的字符串。
bitmaskToList(num)
接受一个整数。返回一个字符串,其中包含一组2的幂列表,其列表中的所有值相加等于这个整数。列表使用逗号分割,按升序排列。
bitmaskToArray(num)
接受一个整数。返回一个UInt64类型数组,其中包含一组2的幂列表,其列表中的所有值相加等于这个整数。数组中的数字按升序排列。
bitPositionsToArray(num)
接受整数并将其转换为无符号整数。返回一个 UInt64
数字数组,其中包含 arg
中等于 1
的位的位置列表,按升序排列。
语法
参数
arg
— 整数值。类型为Int/UInt。
返回值
- 包含等于
1
的位位置列表的数组,按升序排列。
示例
查询语句:
结果:
查询语句:
结果: