1. 程式人生 > >oracle語句書寫常見問題

oracle語句書寫常見問題

between nvl2 使用 查詢 a* 過濾 order by null cape

1.包含空值的表達式都為空

例:select a,b,a*12,a*12+b from test 若a為null,則a*12和a*12+b為null,若b為null,則a*12+b也為null。

  nvl和nvl2濾空函數,nvl(a,b)判斷a是否為Null,如果為null,返回b,否則返回a;nvl2(a,b,c)判斷a是否為null,如果為null,返回c,不為null返回b。

2.null永遠不=null,判斷一個值是否為null。應該用 is null 或者is not null

例子:select * from emp where a=null 執行失敗

3.oracle連接符 || 相當於java中對String的相加

例子: select ‘Hello‘||‘ World‘ from dual;

  dual為oracle中內置的偽表。oracle中from後必須跟隨一張表名,若select屬性不跟任何表相關,則使用from dual;

4.oracle中大小寫敏感,mysql中大小寫不敏感。

例子:select * from emp where a="King" 和select * from emp where a = "KING" 的結果是不一樣的,而在mysql中結果相同。

5.oracle中日期格式敏感。where中日期過濾條件必須符合預定義的日期格式。默認的格式是DD-MON-RR

6.between .. and .. 包含邊界,小值在前,大值在後。

7.如果集合中有null值,不能使用not in,可以使用in

例子:select * from emp where deptno not in(10,20,null);查詢不出數據

8.模糊查詢轉義字符的例子

例子:select * from emp where ename like ‘%\_%‘ escape ‘\‘

9.oracle的事務是自動開啟的,mysql的事務手動開啟

10.where語句的解析順序是從右往左的

例子:where condition1 and condition2;先執行condition2.

  盡量把容易false的語句寫在後面,效率更高。

11.order by 後面可以跟列名,表達式,別名,序號

例子:order by sal;order by sal*12;order by 年薪;order by 4;

12.order by 排序時,如果排序的列有null值,默認null顯示在後面,oracle中null值最大

例子:order by conn desc nulls last;

  如果不加nulls last,conn為null的記錄為顯示在最上方,加上nulls last,含有null值的記錄便會出現在最下方

oracle語句書寫常見問題