本文介绍了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 之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 10:25