数据库空值(Null)小结
1.定義空(Null)值
空值是一個(gè)不可用的,沒有被分配的, 或者不能得到的值.空值不同于零或者空格.
?
2.在算術(shù)表達(dá)式中的空值
在算術(shù)表達(dá)式中,與空值運(yùn)算的結(jié)果為空。
SQL> ed
已寫入 file afiedt.buf
? 1? SELECT last_name,12* salary, 12*salary*(1+commission_pct)
? 2* FROM?? employees
SQL> /
如果commission_pct列有空值,則即使salary不可能是空,但是12*salary*(1+commission_pct)也是一個(gè)空值
解決方法:使用nvl(可能有空值的列,如果是空值用什么值代替)
SQL> ed
已寫入 file afiedt.buf
? 1? SELECT last_name,12*salary,12*salary*(1+nvl(commission_pct,0))
? 2* FROM?? employees
SQL> /
?
3.使用IS NULL運(yùn)算符
SQL> select last_name,manager_id from employees
? 2? where manager_id is null;
?
4.空值也會(huì)帶來(lái)一些算法的改變,會(huì)使快速索引訪問(wèn)失效
Employees表的manager_id列建有索引
SQL> set autotrace trace exp
SQL> select last_name,manager_id from employees
? 2? where manager_id =201;
在下面的語(yǔ)句中,沒有使用索引,設(shè)想全國(guó)有13億人,manager_id的領(lǐng)導(dǎo)很少,去找的時(shí)候不用索引,可想而知這個(gè)查詢多么花費(fèi)時(shí)間,解決方法是在空值的地方,放一個(gè)區(qū)別于正常數(shù)據(jù)的值
SQL> select last_name,manager_id from employees
? 2? where manager_id is null;
?
5.NVL函數(shù)
用法:NVL(可能有空值的列,如果是空值用什么值代替). 數(shù)據(jù)類型可以是日期、字符、或者數(shù)字. 數(shù)據(jù)類型必須匹配:例如
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
轉(zhuǎn)載于:https://www.cnblogs.com/simplefrog/archive/2012/07/15/2592532.html
總結(jié)
以上是生活随笔為你收集整理的数据库空值(Null)小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 市面上常见的TCP/IP以太网一卡通设备
- 下一篇: VB.NET启动外部程序