这篇文章记录一些Oracle的小技巧,以供参考。

一、函数篇

1. TRUNC, ROUND

trunc一个普遍的用法是对数值的截取,如

SQL> SELECT TRUNC(3.1415926,3) FROM dual;

TRUNC(3.1415926,3)
------------------
3.141

TRUNC函数其实还支持对日期的截断,如

SQL> SELECT TRUNC(SYSDATE,'mm') FROM dual;

TRUNC(SYS
---------
01-MAY-13

TRUNC的第二个参数支持多个精度,可以截断到时分,年季月等等。它的语法如下:



其中的fmt的日期格式部分可以参见这里

同理地,ROUND函数也有类似的用法。

2. DECODE

由于在Oracle里 "NULL =  NULL" 不为真也不为假,所以做表的关联时,如果想让NULL值和NULL也关联上就需要这样写:

WHERE (column = :bind_variable OR (column IS NULL AND :bind_variable IS NULL))

其实有一种更简洁的写法,就是用上DECODE函数:

DECODE(column,:bind_variable,1) = 1

(这里方法取自Thomas Kyte《Oracle Database 9i/10g/11g 编程艺术》6.2.2)