Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL中ISNULL和COALESCE的区别_Sql_Sql Server - Fatal编程技术网

T-SQL中ISNULL和COALESCE的区别

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

我在msdn上阅读了
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)