oracle中运算函数,Oracle中位运算函数试验

rawtohex表示将raw类型数据转换为16进制字符串(nvarchar类型,Typ=1),hextoraw表示将16进制字符串转换为raw类型。注意:hextora

1.rawtohex,hextoraw

rawtohex表示将raw类型数据转换为16进制字符串(nvarchar类型,Typ=1),hextoraw表示将16进制字符串转换为raw类型。

注意:hextoraw的参数如果是字符串,会当作16进制数字对待;如果是数字,也会认为是16进制而不是10进制;

SQL> select hextoraw('13'),hextoraw(13),hextoraw('D') from dual;

HEXTORAW('13') HEXTORAW(13) HEXTORAW('D')

-------------- ------------ -------------

13 13 0D

以上前两列返回结果是相同的(十六进制13即十进制19的字符串表示形式);

第三列返回'0D'是因为这样才是一个完整字节;

实际上hextoraw返回的值总是偶数位的,每两位表示一个字节;

dump一下可以证明(Typ=23表示raw类型):

SQL> select dump(hextoraw('13')),dump(hextoraw(13)),dump(hextoraw('D')) from dual;

DUMP(HEXTORAW('13')) DUMP(HEXTORAW(13)) DUMP(HEXTORAW('D'))

-------------------- ------------------ -------------------

Typ=23 Len=1: 19 Typ=23 Len=1: 19 Typ=23 Len=1: 13

注意以下例子:

SQL> select to_number('AB','xx') from dual;

TO_NUMBER('AB','XX')

--------------------

171

SQL> select hextoraw('AB') from dual;

HEXTORAW('AB')

--------------

AB

SQL> select hextoraw(to_number('AB','xx')) from dual;

HEXTORAW(TO_NUMBER('AB','XX'))

----------------------------------------

0171

虽然to_number('AB','xx')是将十六进制字符串'AB'转换为10进制数171,但是作为hextoraw参数时又被认为是16进制数了

2。utl_raw.bit_and,bitand

bitand的参数是十进制数字,将输入参数转化为二进制后求与,返回值是数值型;

SQL> select bitand(10,25) from dual;

BITAND(10,25)

-------------

8

SQL> select dump(bitand(10,25)) from dual;

DUMP(BITAND(10,25))

-------------------

Typ=2 Len=2: 193,9

10=1100b,25=11001b,按位与结果是01000b=8(Typ=2表示number类型)

utl_raw.bit_and的参数和返回值都是raw类型,,

SQL> select utl_raw.bit_and(hextoraw('a'),hextoraw('19')) from dual;

UTL_RAW.BIT_AND(HEXTORAW('A'),

--------------------------------------------------------------------------------

08

SQL> select dump(utl_raw.bit_and(hextoraw('a'),hextoraw('19'))) from dual;

DUMP(UTL_RAW.BIT_AND(HEXTORAW(

--------------------------------------------------------------------------------

Typ=23 Len=1: 8

logo.gif 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值