Home >Database >Mysql Tutorial >[每日一题] OCP1z0-047 :2013-08-29 NULL_MySQL

[每日一题] OCP1z0-047 :2013-08-29 NULL_MySQL

WBOY
WBOYOriginal
2016-06-01 13:30:26933browse

bitsCN.com

[每日一题] OCP1z0-047 :2013-08-29 NULL

 

[每日一题] OCP1z0-047 :2013-08-29 NULL_MySQL

 

正确答案:B

 

 

用函数可以针对各种数据类型时行操作,包括NULL值在内。其中有一类通用函数,是专门针对NULL值的。

 

 

1、针对NULL值的通用函数

(1)NVL(表达式1,表达式2): 转换空值为一个实际值。如果表达式1值为空,NVL将返回表达式2的值作为结果。如果表达式1

 

 

不为空,以表达式1的值作为结果。

 这个函数在有些时候非常有用,在很多应用程序中,都要把空当作0处理,这利用NVL是容易实现的:

[html] gyj@OCM> select name,salary,nvl(salary,0) from t1;  NAME           SALARY NVL(SALARY,0)  ---------- ---------- -------------  gyj2             8000          8000  gyj3            10000         10000  gyj4            15000         15000  gyj8                     0  

 

 

2)NVL2 (表达式1,表达式2,表达式3)

此函数比NVL更复杂些。它首先判断表达式1的值,如果表达式1非空,函数返回表达式2的值作为结果。如果表达式1 为空, 返回

 

 

表达式3的值为结果。表达式1 可以是任意数据类型、运算式子。

仍以上面的例子为准,将SAL列中为空的转换成0,不为空的不变:

[html] gyj@OCM> select name,salary,nvl2(salary,salary,0) from t1;  NAME           SALARY NVL2(SALARY,SALARY,0)  ---------- ---------- ---------------------  gyj2             8000                  8000  gyj3            10000                 10000  gyj4            15000                 15000  gyj8                                      0  

 

 

(3)NULLIF(表达式1,表达式2)

比较两个表达式,如果相等返回空;如果不相等,返回第一个表达式。

用它可以实现和上面例子中相反的效果。有些应用程序,要求把为0的值显示为空:

[html] gyj@OCM> update t1 set salary=0 where id=5;  1 row updated.  gyj@OCM> commit;  Commit complete.  gyj@OCM> select id,name,nullif(salary,0) from t1;          ID NAME       NULLIF(SALARY,0)  ---------- ---------- ----------------           2 gyj2                   8000           3 gyj3                  10000           4 gyj4                  15000           5 gyj5           7 gyj7                  12000  

 

 

nullif(sal,0),就是将SAL为0的转变为空。NVL和NVL2是将为空的转变成其他不是空的值。

 

 

(4)COALESCE(表达式1,表达式2,表达式3,…………,表达式n)

返回表达式列表中的第一个值为非空的表达式的值。

它可以实现和NVL一样的功能,而且它的功能比NVL强。如果用它来实现将NULL转为0的操作,方法如下:

[html] gyj@OCM> select id,name,COALESCE(salary,0) from t1;     ID NAME       COALESCE(SALARY,0)  ---------- ---------- ------------------           2 gyj2                     8000           3 gyj3                    10000           4 gyj4                    15000           5 gyj5                        0           7 gyj7                    12000  

 


bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn