select utl_raw.bit_or('32','3') from dual;
Result : 33
我想知道如何在postgresql中获得类似的输出。请帮忙。
答案 0 :(得分:2)
utl_raw.bit()
显然使用十六进制值。
Postgres仅支持bit strings上的位操作,这意味着需要将这些十六进制输入值转换为位字符串,然后才能使用内置函数。
基于Erwin's answer将十六进制转换为位,您可以这样做:
select (x'32'::bit(8) | x'03'::bit(8));
返回
00110011
注意第二个值的前导0
。 x'3'::bit(8)
将返回00110000
,但如果前导0
,则转换为位字符串会导致00000011
。有关详细信息,请参阅链接的答案。
要获得十六进制数,我们必须先将其转换为整数,然后我们可以使用to_hex()
:
select to_hex((x'32'::bit(8) | x'03'::bit(8))::int)
返回33
答案 1 :(得分:0)
没有内置功能。</ p>
用您选择的程序语言编写它应该不会太难。对于PL / pgSQL,您可以使用get_byte()
和set_byte()
函数。