您的位置首页生活快答

sql中nullif函数什么意思

sql中nullif函数什么意思

的有关信息介绍如下:

sql中nullif函数什么意思

功能

比较 expr1 和 expr2 的值,若二者相等,则返回 NULL,否则返回 expr1 的值。其中 expr1 不能为 NULL。

NULLIF 函数在逻辑上相当于下面的 CASE 语句:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

举例

SQL> select nullif('yct','tyc') from dual;

NUL

---

yct

SQL> select nullif('yct','yct') from dual;

NUL

---

expr1 和 expr2 的类型必须一致,否则会提示错误,因为无法比较二者是否相等:

SQL> select nullif('yct',sysdate) from dual;

select nullif('yct',sysdate) from dual

*

ERROR 位于第 1 行:

ORA-00932: 不一致的数据类型: 要求 CHAR 得到的却是 DATE

当 expr1 为 NULL 时,该函数提示错误:

SQL> select nullif(null,'adf') from dual;

select nullif(null,'adf') from dual

*

ERROR 位于第 1 行:

ORA-00932: 不一致的数据类型: 要求 - 得到的却是 CHAR

这里没有明确提示 expr1 不能为 NULL,而是说类型不一致。那么换成一致的类型呢:

SQL> select nullif(null,null) from dual;

select nullif(null,null) from dual

*

ERROR 位于第 1 行:

ORA-00932: 不一致的数据类型: 要求 - 得到的却是 CHAR

仍然会有这样的提示,不太明确。总之,expr1 是不能为 NULL 的。

下面的这个例子中,将查询哪个员工换了工作。表 job_history 中存储员工的历史工作记录,表 employees 中存储员工当前的工作记录:

SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID"

FROM employees e, job_history j

WHERE e.employee_id = j.employee_id

ORDER BY last_name;

LAST_NAME Old Job ID

------------------------- ----------

De Haan AD_VP

Hartstein MK_MAN

Kaufling ST_MAN

Kochhar AD_VP

Kochhar AD_VP

Raphaely PU_MAN

Taylor SA_REP

Taylor

Whalen AD_ASST

Whalen