关于Oracle函数ROWTOHEX()的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Oracle函数ROWTOHEX()的问题相关的知识,希望对你有一定的参考价值。
最近在学习Oracle 12C, 在学习过程中碰到一个函数rawtohex(x), 这个函数的意思是讲二进制数x转换为包含等价的十六进制数的字符串,书上有个例子没有看明白,执行语句为
select RAWTOHEX(41414743) from dual; 请哪位高手帮忙讲解一下为什么是这个结果呢?怎么算出来的?
答案为:
RAWTOHEX(41414743)
------------------------------
C43A2A302C
is
v_usrinfo usrmst%ROWTYPE;
begin
SELECT *
INTO v_usrinfo
FROM usrmst
WHERE USR_ID=user_name AND NEWUSR_PWD=user_password;
return v_usrinfo;
end ;
行类型不能直接调用
关于Oracle的decode函数
decode(字段,条件1,正常,条件2,异常)。这里我的条件1和条件2不是一个具体的值,而是字段的值大于60,异常,小于60的话正常。比如说以下一列数字:
20
40
80
如果是20或40的话返回正常,80的话就返回异常,这样的话decode函数能实现吗?
如果不能实现,有什么方法实现,请大神指教
我需要匹配的是一个条件,而不是一个具体的值,不要拿复制的答案,好不好。
不过decode要实现这个大于小于就要用到sign函数进行组合。
decode(sign(字段-60),-1,'正常',1,'异常')
建议用case when then
case when 字段<60 then ‘正' when 字段>60 then '异常' else '其他' end追问
你的答案更好,只不过刚才没看见,已经选择采纳答案了,不好意思啊,太谢谢你了
参考技术A DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.其具体的语法格式如下:
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result 是一组成序偶的结果值
default_result 未能与任何一序偶匹配成功时,函数返回的默认值
下面的例子说明了,如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。
SELECT checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup; 参考技术B
换个思路嘛:
union
select 'exception' from table_ where flag>60 参考技术C
DECODE不能实现条件转化
你的情况需要用CASE WHEN
CASE WHEN 字段>=60 THEN '正常' ELSE '异常' END本回答被提问者采纳以上是关于关于Oracle函数ROWTOHEX()的问题的主要内容,如果未能解决你的问题,请参考以下文章
Oracle PLSQL 函数抛出 PL/SQL: numeric or value error: string buffer too small , for return large data