ANSI等价的IS NULL

chi*_* li 4 sql coalesce isnull ansi-sql

我试图找到ANSI方式来编写T-SQL"IS NULL".(更正,是'IN NULL')互联网上的一些帖子说你可以使用coalesce让它像'IS NULL'一样工作

我喜欢这样做的原因:便携式代码.并且查询必须返回行NULL.

到目前为止我创建了这个:

SELECT empid,
       firstname,
       lastname,
       country,
       coalesce(region,'unknown') AS regions ,
       city
FROM HR.Employees
Run Code Online (Sandbox Code Playgroud)

结果集如下所示:

empid   firstname           lastname       country  regions city
1           Sara            Davis           USA     WA      Seattle
2           Don             Funk            USA     WA      Tacoma
3           Judy            Lew             USA     WA      Kirkland 
4           Yael            Peled           USA     WA      Redmond
5           Sven            Buck            UK      unknown London
6           Paul            Suurs           UK      unknown London
7           Russell         King            UK      unknown London
8           Maria           Cameron         USA     WA      Seattle
9           Zoya            Dolgopyatova    UK      unknown London
Run Code Online (Sandbox Code Playgroud)

我确定了那些行NULL,但是如何从这个集合中过滤掉它们?

Gor*_*off 8

这两个IS NULLCOALESCE的ANSI标准,并在几乎所有合理的数据库提供.我想,你想要的结构是:

where region IS NULL
Run Code Online (Sandbox Code Playgroud)

这是标准语法.

要完成COALESCE工作IS NULL需要您知道的值不在数据中:

where coalesce(region, '<null>') <> '<null>'
Run Code Online (Sandbox Code Playgroud)

但是,您需要不同的日期和数字值.