本文介绍了SQL - COALESCE 和 ISNULL 之间的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
COALESCE() 和 ISNULL(,'') 之间的实际区别是什么?
在 SQL 连接中避免 NULL 值时,最好使用哪一种?
谢谢!
解决方案
>使用临时数据库;>走>-- 此语句失败,因为 PRIMARY KEY 不能接受 NULL 值>-- 以及 col2 的 COALESCE 表达式的可空性>-- 评估为 NULL.>CREATE TABLE #Demo ( col1 integer NULL, col2 AS COALESCE(col1, 0) PRIMARY KEY, col3 AS ISNULL(col1, 0) );>>-- 此语句成功,因为>-- ISNULL 函数评估 AS NOT NULL.>>CREATE TABLE #Demo ( col1 integer NULL, col2 AS COALESCE(col1, 0),>col3 AS ISNULL(col1, 0) PRIMARY KEY );
验证 ISNULL 和COALESCE 也不同.例如,ISNULL 的 NULL 值是转换为 int 而对于 COALESCE,您必须提供数据类型.ISNULL 只需要 2 个参数,而 COALESCE 需要一个变量参数个数.
来源:BOL
What are the practical differences between COALESCE() and ISNULL(,'')?
When avoiding NULL values in SQL concatenations, which one is the best to be used?
Thanks!
解决方案
> USE tempdb;
> GO
> -- This statement fails because the PRIMARY KEY cannot accept NULL values
> -- and the nullability of the COALESCE expression for col2
> -- evaluates to NULL.
> CREATE TABLE #Demo ( col1 integer NULL, col2 AS COALESCE(col1, 0) PRIMARY KEY, col3 AS ISNULL(col1, 0) );
>
> -- This statement succeeds because the nullability of the
> -- ISNULL function evaluates AS NOT NULL.
>
> CREATE TABLE #Demo ( col1 integer NULL, col2 AS COALESCE(col1, 0),
> col3 AS ISNULL(col1, 0) PRIMARY KEY );
Source: BOL
这篇关于SQL - COALESCE 和 ISNULL 之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!