合并:SQL 服务器与 Oracle

COALESCE: SQL Server vs Oracle

我有以下脚本:

SELECT 1 
FROM Table t
WHERE COALESCE(NULL, t.ID) = NULL;

t 为空。 Oracle 的查询 returns 1 而 SQL Server 的查询 returns 没有。

SQL 服务器的 COALESCE 操作的输出是什么?我们能否修复此代码,使其对两个数据库的行为相同?

这里有 colaesce 有什么意义,因为你的第一个参数是 NULL。 只需这样做:

SELECT 1 
FROM Table t
where t.ID IS NULL;

问题不在于 Coalesce 函数。如果 t table 为空,则 SQL 服务器将找不到并返回任何行。