Null值的处理、逻辑操作和函数嵌套

Null 值是一个很特别的值。它既不是0,也不是空格。它的值是没有意义的、未知的、不确定的。 Null 值一般的计算符用的是 ISNULL 和IS NOT NULL 来进行。

升序排序时,Null 排在最后,降序排序时null排在最前。 与NULL参与的算术运算结果均为NULL

 

逻辑与(AND)算法

在and 逻辑表达式中,只要有F (假)其结果就为F,如果没有F,在AND逻辑表达式中有NULL的其结果就为Null,只有当两个条件都为T时,其结果才为T。

逻辑或(OR) 算法

在OR 逻辑表达式中,只要有T(真)其结果就为T,如果没有T,在OR 逻辑表达式中

有NULL的其结果就为NULL,只有当两个条件都为F时,其结果才为F。

逻辑非(NOT)算法

NOT T =F   NOT F=T    NOT NULL =NULL

 

运算符的优先级:

(1)算术运算符 (2)连接运算符 (3)比较(关系)运算符(4)IS NULL、IS NOT NULL、LIKE 、NOT LIKE、IN、NOT IN运算符(5)between 和Not Between运算符(6)Not 逻辑运算符(7)And逻辑运算符(8)OR 逻辑运算符

 

例如:selectename,job,sal from emp where job=’CLERK’ OR job=’SALEMAN’ AND sal>=1300; 按照运算符优先级,Oracle首先执行由红体部分组成的条件,然后在执行其他条件。

 

 

NVL空值转换函数。

因为与Null进行的算术运算均为NULL,所以有此函数。

NVL函数用于把一空值(NULL)转换成某一实际的值,格式如下:

NVL(表达式1,表达式2)

如果表达式1为空值(NULL),NVL返回值为表达式2的值,否则返回表达式1的值。表达式1和表达式2可以为数字型、字符型或日期型,但二者必须一致。例如:

对数字型: NVL(comm,0)

对字符型:NVL (TO_CHAR(comm),’NO Comment’)

对日期型:NVL(hiredate,’31-DEC-99’)

有经验的开发者经常用此函数来避免因空值(NULL )产生的错误。

 

DECODE 函数

因为SQL中没有逻辑判断语句(分支语句),所以Oracle引入了DECODE函数完成类似的功能。

 

Oracle的单值函数可以嵌套。函数的计算次序为从里到外。

 

NVL2 是对NVL   的一个扩充

For exemple: NVL2(comm,’sal+comm’,sal)”income”    首先测试comm,如果comm不为空,就返回表达式sal+comm的值,如果为空返回sal的值;返回值的列标为income  

NVL2(表达式1,表达式2,表达式3) 表达式2和表达式3可以是出了LONG以外的任何数据类型,表达式1可以是任何数据类型。如果表达式2和表达式3的数据类型不同,Oracle服务器把表达式3的数据类型转换成表达式2的数据类型;此时如果表达式3为空值,Oracle服务器就不进行数据类型转换。NVL2函数返回值的数据类型与表达式2的数据类型相同。但表达式2的数据类型为定长字符型CHAR时,NVL2函数返回值的数据类型为变长字符型VARCHAR2

 

NULLIF函数

NULLIF(表达式1,表达式2)  该函数比较两个表达式的值,如果相等就返回NULL,如果不等就返回表达式1  ,在此函数中表达式1不能为NULL

发布了151 篇原创文章 · 获赞 45 · 访问量 25万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章