我在msdn上阅读了ISNULL
和COALESCE
之间的比较
Microsoft's explain
的部分
我很困惑。有人可以举个例子来说明一点吗?" ISNULL和COALESCE的验证也不同。例如, ISNULL的NULL值转换为int,而对于COALESCE,则转换为int 必须提供数据类型。"
感谢您的帮助
答案 0 :(得分:3)
这是有效查询,将返回INT
:
SELECT ISNULL(NULL, NULL);
它会失败:
SELECT COALESCE(NULL, NULL);
COALESCE的至少一个参数必须是一个表达式 不是NULL常量。
这是有效查询,将返回INT
:
SELECT COALESCE(CAST(NULL AS INT), NULL);
您可以检查结果集的元数据:
<强> DEMO 强>
SELECT 'ISNULL',name, system_type_name
FROM sys.dm_exec_describe_first_result_set ('SELECT ISNULL(NULL, NULL)', NULL,0)
UNION ALL
SELECT 'COALESCE', name, system_type_name
FROM sys.dm_exec_describe_first_result_set (N'SELECT COALESCE(CAST(NULL as FLOAT), NULL);', NULL,0)