最近需在应用端查询数据库,回顾了oralce一些函数的用法,借此机会整理一波。
Sign函数
SIGN(value)
如果value为0,Sign函数返回0;
如果value为正数,Sign函数返回1;
如果value为负数,Sign函数返回==-1==;
Nvl函数
NVL(expr1,expr2)
如果expr1为空,返回expr2;
如果expr1不为空,则返回expr1本身。
Nvl2函数
NVL2(expr1,expr2, expr3)
如果expr1为空,返回expr2;
如果expr1不为空,则返回expr3。
NULLIF函数
NULLIF(exp1,expr2)
如果exp1和exp2相等,则返回空(NULL),否则返回第一个值exp1。
Decode函数
DECODE(value,if1,then1,if2,then2,...,else)
如果value的值为if1,Decode 函数的结果是then1;
如果value的值为if2,Decode函数的结果是then2;
以此类推,多个if/then 配对;
如果value结果不等于给出的任何配对,Decode 函数返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。
decode函数的一些用法
1 翻译值
IF 条件==值1 THEN
RETURN(翻译值1)
ELSIF 条件==值2 THEN
RETURN(翻译值2)
...
ELSIF 条件==值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
2 比较大小
decode(sign(value1 - value2),
1, 'value1 > value2',
-1, 'value1 < value2',
0, 'value1 = value2',
'未知')
3 判断是否为空
decode(value,NULL,'value为空',value)
4 非必输条件控制(应用端)
T_BRCH_SUBJECT 机构科目表
含BRCH_NO机构号 、SUBJECT_NO表外科目、CURR_CODE币种 三个字段。
SELECT SUBJECT_NO
FROM T_BRCH_SUBJECT
WHERE BRCH_NO = decode(nvl(?,''),'',BRCH_NO,?) and CURR_CODE = decode(nvl(?,''),'',CURR_CODE,?)