背景
Oracle 的 Raw 类型可以进行位操作,在 lightdb 24.1 中,对其中的函数:bit_and, bit_or, bit_xor, bit_complement 四个函数进行了改进。
用例
bit_and
bit_and 函数对 raw 类型中的每一位进行 and 操作,即按位与。
--= 0A0B
SELECT UTL_RAW.BIT_AND(HEXTORAW('0A0B'), HEXTORAW('0F')) AS result FROM DUAL;
算法是:0A 与 0F 按位与,然后将 0B 直接拼接到结果中。
bit_or
bit_or 函数对 raw 类型中的每一位进行 or 操作,即按位或。
--= BBFDEF
SELECT UTL_RAW.BIT_OR(HEXTORAW('ABCDEF'), HEXTORAW('1234')) FROM dual;
算法是:ABCD 与 1234 按位或,然后将 EF 直接拼接到结果中。
bit_xor
bit_xor 函数对 raw 类型中的每一位进行 xor 操作,即按位异或。
--= B9F9EF
SELECT UTL_RAW.BIT_XOR(HEXTORAW('ABCDEF'), HEXTORAW('1234')) FROM dual;
算法是:ABCD 与 1234 按位异或,然后将 EF 直接拼接到结果中。
bit_complement
bit_complement 函数 raw 类型中的每一位进行按位求补操作。
--= 543210
select UTL_RAW.BIT_COMPLEMENT(HEXTORAW('ABCDEF')) from dual;
算法:
F - A = 5
F - B = 4
F - C = 3
F - D = 2
F - E = 1
F - F = 0