oracle 中关于null的操作
空值
????空值一般用NULL表示
????一般表示未知的、不確定的值,也不是空格
????一般運算符與其進行運算時,都會為空
????空不與任何值相等
?
????表示某個列為空用:IS NULL??不能使用COMM=NULL這種形式
????某個列不為空:IS NOT NULL?不能使用COMM != NULL?這種形式
?
????空值在作升序排列時,空值會放到最后。
????相反作降序排列時,空值會放在最前。
?
?空值作邏輯運算時:
????AND運算:
????F AND F?=F???????F AND T?=F???????F AND NULL?=F
????T AND F?=F???????T AND T?=T???????T AND NULL IS NULL
????NULL AND F?=F????NULL AND T IS NULL???NULL AND NULL IS NULL
?
????就是說AND的優先級是:F?->NULL?->T
?
?
????OR運算:
????T OR T?=T?????T OR F?=T?????T OR NULL?=T
????F OR T?=T?????F OR F?=F?????F OR NULL IS NULL
????NULL OR T?=T??NULL OR F IS NULL?NULL OR NULL IS NULL
?
????OR運算優先級:T?->NULL?->F
?
?
????NOT運算:
???????NOT T?=F
???????NOT F?=T
???????NOT NULL IS NULL
?
?與空值相關的函數:
????NVL?函數
???????格式:NVL(表達式1,表達式2)
???????作用:測試表達式的值,如果表達式1為空,則返回表達式2的值;不為空,返回表達式1的值。
?
????NVL2???函數
???????格式:NVL2(表達式1,表達式2,表達式3)
???????作用:測試表達式的值,表達式1不為空,返回表達式2的值,如果為空,則返回表達式3的值。
?
?
????NULLIF??相等為空
???????格式:NULLIF?(表達式1,表達式2)
???????作用:比較表達式1和表達式2的值,如果兩個相等則返回為空,否則返回表達式1的值。
?
????COALESCE????找非空
???????格式:COALESCE?(表達式1,表達式2,表達式3,...,表達式n)
???????作用:返回第一個不為空的值,如果所有的都為空,則返回NULL。
?
演示:
Create Table Test6(id varchar2(30),name varchar2(30),age number(2),sex varchar2(2) )建表語句
結果集
?
1、nvl函數
select id,name,nvl(TO_CHAR(age),'未錄入'),nvl(TO_CHAR(sex),'未錄入') from Test6?
2、nvl2函數
? ? ? ?格式:NVL2(表達式1,表達式2,表達式3)
???????作用:測試表達式的值,表達式1不為空,返回表達式2的值,如果表達式1不為空,則返回表達式3的值。
select id,name,NVL2(TO_CHAR(age),2*(age+sex),age) AS othesr from Test6;運算方式和?:運算規則一致當TO_ChAR(age)不為空(true)時,執行2*(age+sex),否則就執行后面的表達式age
注意:NULL和任何數進行算數操作,其返回值都是NULL。
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/GreenLeaves/p/6542598.html
總結
以上是生活随笔為你收集整理的oracle 中关于null的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS中apply和call的联系和区别
- 下一篇: 【03-14】日常资源访问备份