T-SQL中ISNULL和COALESCE的区别
我在msdn上阅读了T-SQL中ISNULL和COALESCE的区别,sql,sql-server,Sql,Sql Server,我在msdn上阅读了ISNULL和COALESCE之间的比较。 那部分 “ISNULL和COALESCE的验证也不同。例如, ISNULL的NULL值转换为int,而COALESCE的NULL值 必须提供数据类型。“ 把我弄糊涂了。有人能给我举个例子让我更清楚吗 感谢您的帮助这是有效的查询,将返回INT: SELECT ISNULL(NULL, NULL); SELECT COALESCE(CAST(NULL AS INT), NULL); 它将失败: SELECT COALESCE(N
ISNULL
和COALESCE
之间的比较。那部分 “ISNULL和COALESCE的验证也不同。例如, ISNULL的NULL值转换为int,而COALESCE的NULL值 必须提供数据类型。“ 把我弄糊涂了。有人能给我举个例子让我更清楚吗
感谢您的帮助这是有效的查询,将返回
INT
:
SELECT ISNULL(NULL, NULL);
SELECT COALESCE(CAST(NULL AS INT), NULL);
它将失败:
SELECT COALESCE(NULL, NULL);
至少一个要合并的参数必须是
不是空常量
它是有效的查询,将返回
INT
:
SELECT ISNULL(NULL, NULL);
SELECT COALESCE(CAST(NULL AS INT), NULL);
您可以检查结果集的元数据:
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)