更新时间:2024-12-11 GMT+08:00

二进制函数和运算符

二进制运算符

|| 运算符执行连接。

二进制函数

  • length(binary) → bigint

    返回binary的字节长度。

    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

    将binary编码为base64字符串表示。

    select to_base64(CAST('hello world' as binary)); -- aGVsbG8gd29ybGQ=
  • from_base64(string) → varbinary

    将base64编码的string解码为varbinary。

    select from_base64('helloworld'); --  85 e9 65 a3 0a 2b 95
  • unbase64(string) → varbinary

    将base64编码的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

    将binary编码为16进制字符串表示。

    select to_hex(x'15245F');  --  15245F
  • from_hex(string) → varbinary

    将16进制编码的string解码为二进制数据。

    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算法在密码学场景已被攻击者破解,不建议应用于密码学安全场景。