NULLIF (Transact-SQL)

翻译 2013年12月04日 16:30:51

NULLIF (Transact-SQL)

如果两个指定的表达式等价,则返回空值。

语法

 
NULLIF ( expression , expression )

备注

如果两个表达式相等且结果表达式为 NULL,则 NULLIF 等价于 CASE 的搜索函数。

参数

expression

常量、列名、函数、子查询或算术运算符、位运算符以及字符串运算符的任意组合。

有关详细信息,请参阅表达式(Transact-SQL)

返回类型

返回类型与第一个 expression 相同。

如果两个表达式不等价,则 NULLIF 返回第一个 expression 的值。如果表达式等价,则 NULLIF 返回第一个 expression 类型的空值。


示例

以下示例创建 budgets 表以显示部门 (dept) 的当年预算 (current_year) 以及上一年预算 (previous_year)。对于当年预算,那些同上一年相比预算没有改变的部门使用 NULL,那些预算还没有确定的部门使用 0。若要只计算那些接收预算的部门的预算平均值,并包含上一年的预算值(当 current_year0 时,使用 previous_year 的值),请组合使用 NULLIFCOALESCE 函数。

  复制代码
USE AdventureWorks;
GO
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'budgets')
   DROP TABLE budgets;
GO
SET NOCOUNT ON;
CREATE TABLE budgets
(
   dept            tinyint   IDENTITY,
   current_year      decimal   NULL,
   previous_year   decimal   NULL
);
INSERT budgets VALUES(100000, 150000);
INSERT budgets VALUES(NULL, 300000);
INSERT budgets VALUES(0, 100000);
INSERT budgets VALUES(NULL, 150000);
INSERT budgets VALUES(300000, 250000);
GO  
SET NOCOUNT OFF;
SELECT AVG(NULLIF(COALESCE(current_year,
   previous_year), 0.00)) AS 'Average Budget'
FROM budgets;
GO

下面是结果集: 

   
Average Budget                           
---------------------------------------- 
212500.000000

(1 row(s) affected)


教程:编写 Transact-SQL 语句

第 1 课:创建数据库对象 本课将介绍如何创建数据库,在数据库中创建表,然后访问表中的数据并对其进行更改。由于本课是对使用 Transact-SQL 的简介,因此它未使用或说明为这些...
  • xinqingwuji
  • xinqingwuji
  • 2016年05月12日 11:23
  • 8560

SQL经典练习(Transact-SQL)

CREATE TABLE Student (Sno VARCHAR(3) NOT NULL, Sname VARCHAR(4) NOT NULL, Ssex VARCHAR(2) NOT NUL...
  • linkedin_37130665
  • linkedin_37130665
  • 2017年01月02日 21:14
  • 120

[Oracle] SQL*Loader 详细使用教程(4)- 字段列表

在上一篇中我们介绍了SQL*Loader中最重要的文件——控制文件,而本篇要介绍控制文件中最重要的部分——字段列表,在字段列表里定义数据位置、数据类型、过滤条件和分隔符等。 下面是字段列表的一个例子:...
  • u010415792
  • u010415792
  • 2013年08月21日 23:21
  • 2556

Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解

NVL(EXPR1,EXPR2) NVL2(EXPR1,EXPR2,EXPR3) NULLIF(EXPR1,EXPR2) COALESCE(EXPR1,,..,EXPRn) decode ...
  • xiangsir
  • xiangsir
  • 2013年02月22日 10:40
  • 12807

Teradata 学习笔记4

CASE 表达式: 基于值(Valued)的CASE语句 CASE语句允许对返回的数据记录进行条件处理。基于值的CASE表达式的基 本格式为: CASE value-expr WHEN exp...
  • bff1022
  • bff1022
  • 2014年04月09日 17:53
  • 569

使用coalesce和nullif的组合来减轻写sql的工作量

今天帮朋友调了一个网站,无意中翻了一个sp,看到了一段很长的select语句,这个select语句之所以长,是因为有好几个一般复杂的case语句跟在select的后面。我们摘取其中的一个字段的逻辑规则...
  • zunguitiancheng
  • zunguitiancheng
  • 2013年05月31日 02:12
  • 545

sqlite 中函数--nullif()、ifnull()、strftime()及时间格式函数

记录一下,SQLite中nullif和ifnull的区别:nullif(null,'') --输出null nullif('','') --输出null nullif('t','t...
  • kingoneyun
  • kingoneyun
  • 2017年08月04日 17:47
  • 455

【SQL】使用一条INSERT语句完成多表插入

这是一条颠覆常规的插入方法,一条INSERT语句可以完成向多张表的插入任务。小小地展示一下这种插入方法。 1.创建表T并初始化测试数据,此表作为数据源。 sec@ora10g> create ...
  • index_ling
  • index_ling
  • 2017年04月20日 14:02
  • 583

【Transact-SQL】BOM按节点排序

问题是这样的: CREATE TABLE [dbo].[BOM_Table]( [Code] [nvarchar](50) NULL, [Z_Name] [nvarchar](50) NULL,...
  • yupeigu
  • yupeigu
  • 2014年03月20日 14:45
  • 1352

Transact-SQL语言类型

Transact-SQL是在Microsoft SQL Server和Sybase SQL Server上的ANSI SQL实现。为了遵循ANSI SQL标准,Transact-SQL提供了数据定义语...
  • liuziteng0228
  • liuziteng0228
  • 2017年12月31日 11:54
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NULLIF (Transact-SQL)
举报原因:
原因补充:

(最多只允许输入30个字)