lightdb 支持 oracle raw bit_and 等

背景

Oracle 的 Raw 类型可以进行位操作,在 lightdb 24.1 中,对其中的函数:bit_and, bit_or, bit_xor, bit_complement 四个函数进行了改进:这些函数有了 strict 属性,即输入参数如果有 null, 则直接返回 null。

用例

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

posted on 2024-04-02 20:42  winter-loo  阅读(12)  评论(0编辑  收藏  举报

导航