这篇文章记录一些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)

我最早用的数据库是Oracle,用了快一年,主要做ETL,平时做点维护的工作,还做过优化,对于Oracle真是爱不释手,再用着PL/SQL Developer真是如虎添翼(关于PL/SQL  Developer的配置可以参看这篇文章,还可以从官网上下一些插件)。

现在换工作用上了MS SQL Server,哎,还有它自带的开发工具SQL Server Management Studio(SSMS),真是只能一声长叹啊!

SQL Server 2008可能还好点,2005版的不支持代码提示,不支持关键词自动大写,代码的自动化和左边栏的导航也远不及PL/SQL  Developer,后者还有一些专为开发而设置的功能也极方便。

好吧,吐槽结束。