一、前言
有那么一段时间,确切的是有近一年的时间,没有总结什么。总觉的简单的东西不想写了,如果不深奥,不高级,不系统就不写,就这样,近一年的时间我似乎没有研究什么新技术,但也确实实践了很多之前没有用过的东西,不过似乎不算深入,说来羞愧的不行。不过现在想想记录下自己之前用过的哪怕一点点简单的东西,也代表自己走过的痕迹了吧,当回忆的时候想想自己曾经记录过,也是值得的吧。下面记录几个之前用过的简单的Oracle函数吧
1.nvl()
nvl(a,b)代表如果a为null则返回b,比如之前处理过一些历史数据,当table1的某个字段为空,我们处理下根据其他表的信息来更新这个字段不为null,比如我要更新一个表的创建时间
update table1
set
table1.CREATED_TIME= nvl(table1.CREATED_TIME,(select table2.CREATED_TIMEfrom table2 where resId= table1.id))
ht.UPDATED_TIME = sysdate
where table1.CREATED_TIME is null
2.decode()
decode函数相当于if-then-default.
DECODE(value, if1, then1, if2,then2, if3,then3, . . . default)
Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
比如,我要查询某个字段值,字段名称为居室,数据库中存储的数字,我要重新匹配为我需要的值。
select DECODE( t1.BED_ROOMS,0,'零居',null,'零居',1,'一居',2,'二居',3,'三居',4,'四居','五居及以上') AS bedRooms from table1 t1
3.to_char()
(1)日期转换,to_char(date,'格式')
select to_date('2018-12-14','yyyy-MM-dd') from dual;
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
(2)处理数字:to_char(number,'格式')
select to_char(88877) from dual;
select to_char(1234567890,'099999999999999') from dual;
select to_char(12345678,'999,999,999,999') from dual;
select to_char(123456,'99.999') from dual;
select to_char(1234567890,'999,999,999,999.9999') from dual;
select TO_CHAR(123,'$99,999.9') from dual;
…………
4sign()
比较大小函数
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 ,例如:
SELECT "SIGN"(10-8) FROM dual;
返回1
简简单单
……