SQL Server CE和SQL Server 2000/2005中的ISNULL函数的异同

replacement_value)

参数:check_expression 将被检查是否为NULL的表达式。check_expression可以是任何类型的。

replacement_value 在check_expression为NULL时将返回的表达式。replacement_value必须与check_expression具有相同的类型。

返回值:返回与check_expression相同的类型。

注释:如果check_expresssion不为NULL,那么返回该表达式的值;否则返回replacement_value。

 

二、SQL Server CE中的ISNULL的用法。

数据库的表TestIsNull表结构和数据同上:我们先来看看同样一条SQL语句在SQL Server CE中查询出来的数据是什么?

 

SELECT transactionNumber, Name, ISNULL(WorkName, '') AS NewWorkName
FROM TestIsNull
 


TransactionNumber Name NewWorkName
1 test1 True
2 test2 True
3 test3 True
4 test4 True
5 test5 True
6 test6 True
7 test6 False
8 test00 False


很明显和上面用SQL Server 2000查询出来的结果不一样。通过观察发现这里的ISNULL中的第二个参数无效,这里只判断了WorkName字段是否为NULL,如果为NULL,则ISNULL(WorkName,'')返回值为True,否则为False。

最后通过查找SQL CE的帮助文档,终于找到原因了:

 官方的SQL Server Compact Edition不支持的ISNULL,但所描述的行为尽管没有SQL语法错误,或者抛出异常情况。另一个接合函数(COALESCE)可以替代ISNULL的功能,返回第一个非空参数。

我们用COALESCE来模仿上面的ISNULL的写法:

 

SELECT transactionNumber, Name, COALESCE (WorkName, '') AS NewWorkName
FROM  TestIsNull
 

这样通过查询出来的结果集就和SQL Server 2000(或SQL Server 2005)查询出来的结果集一样了。

下面简单介绍一下关于COALESCE函数的用法:

COALESCE 返回其参数中第一个非空表达式。

语法:COALESCE (expression [,...n])

参数:expression:任何类型的表达式。n:表示可以指定多个表达式的占位符。所有表达式必须是相同类型。或者可以隐式转换成相同的类型。

返回值:将相同的值作为expression返回。

注释:如果所有自变量均为NULL,则COLALESCE返回NULL值。COALESCE(expression,...n)与此CASE函数等价:

 

CASE
   WHEN (expression1 IS NOT NULL) THEN expression1
   ...
   WHEN (expressionN IS NOT NULL) THEN expressionN
   ELSE NULL

 

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/sql/sql2005/20100719/449426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值