相当于UTL_RAW.BIT_或Postgresql中的Oracle
我想知道如何在postgresql中获得类似的输出。请帮助。没有内置的功能相当于UTL_RAW.BIT_或Postgresql中的Oracle,oracle,postgresql,oracle11g,postgresql-9.4,Oracle,Postgresql,Oracle11g,Postgresql 9.4,我想知道如何在postgresql中获得类似的输出。请帮助。没有内置的功能 用你选择的程序语言来写应该不会太难。对于PL/pgSQL,可以使用get\u byte()和set\u byte()函数。没有内置函数 用你选择的程序语言来写应该不会太难。对于PL/pgSQL,您可以使用get_byte()和set_byte()函数。utl_raw.bit()显然使用十六进制值 Postgres仅支持位操作,这意味着需要将这些十六进制输入值转换为位字符串,然后可以使用内置函数 基于将十六进制转换为位,可
用你选择的程序语言来写应该不会太难。对于PL/pgSQL,可以使用
get\u byte()
和set\u byte()
函数。没有内置函数
用你选择的程序语言来写应该不会太难。对于PL/pgSQL,您可以使用get_byte()
和set_byte()
函数。utl_raw.bit()
显然使用十六进制值
Postgres仅支持位操作,这意味着需要将这些十六进制输入值转换为位字符串,然后可以使用内置函数
基于将十六进制转换为位,可以执行以下操作:
select utl_raw.bit_or('32','3') from dual;
Result : 33
这是回报
select (x'32'::bit(8) | x'03'::bit(8));
注意第二个值的前导0
<代码>x'3'::位(8)将返回00110000
,但使用前导0
转换为位字符串将导致00000011
。有关这方面的更多详细信息,请参见链接答案
要返回十六进制数,我们必须首先将其转换为整数,然后可以对其使用To_hex()
:
00110011
返回33
utl\u raw.bit()
显然使用十六进制值
Postgres仅支持位操作,这意味着需要将这些十六进制输入值转换为位字符串,然后可以使用内置函数
基于将十六进制转换为位,可以执行以下操作:
select utl_raw.bit_or('32','3') from dual;
Result : 33
这是回报
select (x'32'::bit(8) | x'03'::bit(8));
注意第二个值的前导0
<代码>x'3'::位(8)将返回00110000
,但使用前导0
转换为位字符串将导致00000011
。有关这方面的更多详细信息,请参见链接答案
要返回十六进制数,我们必须首先将其转换为整数,然后可以对其使用To_hex()
:
00110011
返回
33
您确定它的33?。@VaoTsun:看起来像是十六进制数是-看起来像是soare您确定它的33?。@VaoTsun:看起来像是十六进制数是-看起来是这样选择到_hex((x'32'| x'03')::int)代码>在(16)上的提示后得到了相同的结果-谢谢,我正在尝试对两个十六进制进行位或位运算,如to_hex()| to_hex()。谢谢-一匹没有名字的马选择十六进制((x'32'| x'03')::int)代码>在(16)上的提示后得到了相同的结果-谢谢,我正在尝试对两个十六进制进行位或位运算,如to_hex()| to_hex()。谢谢-一匹没有名字的马