二进制函数和运算符
二进制运算符
|| 运算符执行连接。
二进制函数
- length(binary) → bigint
select length(x'00141f');-- 3
- concat(binary1, ..., binaryN) → varbinary
将binary1,binary2,binaryN串联起来。这个函数返回与SQL标准连接符||相同的功能。
select concat(X'32335F',x'00141f'); -- 32 33 5f 00 14 1f
- to_base64(binary) → varchar
select to_base64(CAST('hello world' as binary)); -- aGVsbG8gd29ybGQ=
- from_base64(string) → varbinary
select from_base64('helloworld'); -- 85 e9 65 a3 0a 2b 95
- unbase64(string) → varbinary
SELECT from_base64('helloworld'); -- 85 e9 65 a3 0a 2b 95
- to_base64url(binary) → varchar
使用URL安全字符,将binary编码为base64字符串表示。
select to_base64url(x'555555'); -- VVVV
- from_base64url(string) → varbinary
使用URL安全字符,将base64编码的string解码为二进制数据。
select from_base64url('helloworld'); -- 85 e9 65 a3 0a 2b 95
- to_hex(binary) → varchar
select to_hex(x'15245F'); -- 15245F
- from_hex(string) → varbinary
select from_hex('FFFF'); -- ff ff
- to_big_endian_64(bigint) → varbinary
将bigint类型的数字编码为64位大端补码格式。
select to_big_endian_64(1234); _col0 ------------------------- 00 00 00 00 00 00 04 d2 (1 row)
- from_big_endian_64(binary) → bigint
64位大端补码格式的二进制解码为bigint类型的数字。
select from_big_endian_64(x'00 00 00 00 00 00 04 d2'); _col0 ------- 1234 (1 row)
- to_big_endian_32(integer) → varbinary
将bigint类型的数字编码为32位大端补码格式。
select to_big_endian_32(1999); _col0 ------------- 00 00 07 cf (1 row)
- from_big_endian_32(binary) → integer
32位大端补码格式的二进制解码为bigint类型的数字。
select from_big_endian_32(x'00 00 07 cf'); _col0 ------- 1999 (1 row)
- to_ieee754_32(real) → varbinary
根据IEEE 754算法,将单精度浮点数编码为一个32位大端字节序的二进制块。
select to_ieee754_32(3.14); _col0 ------------- 40 48 f5 c3 (1 row)
- from_ieee754_32(binary) → real
对采用IEEE 754单精度浮点格式的32位大端字节序binary进行解码。
select from_ieee754_32(x'40 48 f5 c3'); _col0 ------- 3.14 (1 row)
- to_ieee754_64(double) → varbinary
根据IEEE 754算法,将双精度浮点数编码为一个64位大端字节序的二进制块。
select to_ieee754_64(3.14); _col0 ------------------------- 40 09 1e b8 51 eb 85 1f (1 row)
- from_ieee754_64(binary) → double
对采用IEEE 754单精度浮点格式的64位大端字节序binary进行解码。
select from_ieee754_64(X'40 09 1e b8 51 eb 85 1f'); _col0 ------- 3.14 (1 row)
- lpad(binary, size, padbinary) → varbinary
左填充二进制以使用padbinary调整字节大小。如果size小于二进制文件的长度,则结果将被截断为size个字符。size不能为负,并且padbinary不能为空。
select lpad(x'15245F', 11,x'15487F') ; -- 15 48 7f 15 48 7f 15 48 15 24 5f
- rpad(binary, size, padbinary) → varbinary
右填充二进制以使用padbinary调整字节大小。如果size小于二进制文件的长度,则结果将被截断为size个字符。size不能为负,并且padbinary不能为空。
SELECT rpad(x'15245F', 11,x'15487F'); -- 15 24 5f 15 48 7f 15 48 7f 15 48
- crc32(binary) → bigint
计算二进制块的CRC 32值。
- md5(binary) → varbinary
计算二进制块的MD 5哈希值。
- sha1(binary) → varbinary
计算二进制块的SHA 1哈希值。
- sha2(string, integer) → string
安全散列算法2, 是一种密码散列函数算法标准,其输出长度可以取224位,256位, 384位、512位,分别对应SHA-224、SHA-256、SHA-384、SHA512
- sha256(binary) → varbinary
计算二进制块的SHA 256哈希值。
- sha512(binary) → varbinary
计算二进制块的SHA 512哈希值。
- xxhash64(binary) → varbinary
计算二进制块的XXHASH 64哈希值。
- spooky_hash_v2_32(binary) → varbinary
计算二进制块的32位SpookyHashV2哈希值。
- spooky_hash_v2_64(binary) → varbinary
计算二进制块的64位SpookyHashV2哈希值。
- hmac_md5(binary, key) → varbinary
使用给定的key计算二进制块的HMAC值(采用md5)。
- hmac_sha1(binary, key) → varbinary
使用给定的key计算二进制块的HMAC值(采用sha1)。
- hmac_sha256(binary, key) → varbinary
使用给定的key计算二进制块的HMAC值(采用sha256)。
- hmac_sha512(binary, key) → varbinary
使用给定的key计算二进制块的HMAC值(采用sha512)。
CRC32、MD5、SHA1算法在密码学场景已被攻击者破解,不建议应用于密码学安全场景。