今天我在敲机房结账的时候遇到一个问题,就是查询汇总金额的时候,比如:查询未结账的总充值金额。我用的是SQL的sum()函数,SQL语句是这么写的:

string sql = "select sum(RechCash) from Recharge where IsCheck = 0 and OperatorID = @operatorID"

如果没有符合条件的数据,我本以为会返回一个空表,所以我在B层会判断返回的表中有没有数据,如果有数据就转换成decimal型返回,如果没有数据就返回0。代码如下:

if (dt.Rows.Count > 0)
{return (decimal)dt.Rows[0][0];
}
else
{return 0;
}

可是让我没有想到的是,即使没有数据,返回的表中也会有一条数据。如下图:

从错误中可以看出表中确实有一条数据,我把SQL语句复制到SQL Server2014中查看查询的结果。

可见查出来的结果为NULL,但是返回的表中确实有一条数据,而且不是0,否则不会报错。所以我就想看看表中究竟存的什么。

我发现竟然表中竟然存的是一个空字符串,所以强制抓换为decimal类型时才会报错。
知道了表中存的是什么数据我就知道怎样处理了:

if (dt.Rows[0][0].ToString() == string.Empty)
{return 0;
}
else
{return (decimal)dt.Rows[0][0]; ;
}

所以,最后我发现如果D层的SQL语句如果用聚合函数,即使没有数据,也会返回一个空字符串;而如果不用聚合函数的,只查询字段的话,没有符合数据的条件就会返回一个空表。

isnull函数

但是如果查询数据库为NULL,其实处理不用这么麻烦,只要在SQL语句中用一个isnull() 函数就行了。如下图:

如果数据库是oracel就用nvl(),如果数据库是Mysql就用ifnull()。
这个函数是一个空值转换函数,有点儿类似于三元表达式。如果第一个参数为NULL,则返回第二个参数,如果不为NUll,就正常返回。但是它有一个限制条件,就是两个参数的类型必须相同。

SQL Server的 isnull 函数相关推荐

  1. Orcale的NVL、NVL2函数和SQL Server的ISNULL函数

    Orcal 的 nvl函数 NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值,Expr1,Expr2都为NULL则返回NULLNVL2(Expr1, ...

  2. sql server 中isnull函数的使用

    isnull(v1,v2) v1,v2 是两个数据类型相同的值,在使用 isnull 函数的时候: 1.v1,v2 的数据类型必须相同 2.该函数可以理解为判断  v1  是否为 null ,如果 v ...

  3. oracle判断是否为空为空赋值,sql数据库中ISNULL函数用法 sql语句判断值是否为空...

    在使用sql数据库的过程,由于服务器设置不当导致sql server的某个字段为空,导致部分内容显示失败,就需要将为空的字符替换为制定的字符. 例子,sql语句: use 数据库 update new ...

  4. oracle同sql中isnull无法,SQL中的ISNULL函数使用介绍

    这篇文章主要为大家详细介绍了SQL中的ISNULL函数使用介绍,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ISNULL 使用指定的替换值替换 ...

  5. SQL Server 分隔字符串函数实现

    SQL Server 分隔字符串函数实现 在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录, ...

  6. SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法 IS ...

  7. SQL中的ISNULL函数详解及用途

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助 ISNULL 使用指定的替换值替换 NULL. 语法 ISN ...

  8. SQL Server中自定义函数和游标应用的经典案例

    2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...

  9. SQL Server 2005 MD5函数

    原文:SQL Server 2005 MD5函数 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的M ...

最新文章

  1. Ubuntu常用工具
  2. (SpringMVC)拦截器
  3. python数据结构是建好的吗_Python数据结构创建的具体应用方案详细描述
  4. python天天向上的力量 A
  5. 04Prism WPF 入门实战 - Module
  6. UWP使用AppService向另一个UWP客户端应用程序提供服务
  7. Arrays工具类(jre中基本类库提供的工具类)
  8. Mysql学习总结(32)——MySQL分页技术详解
  9. deque iterator not dereferencable 问题
  10. cept源代码目录结构详解_知识树(转)
  11. uni保存canvas图片_小程序canvas【开箱即用】
  12. 日常网页bug页面收集
  13. android模拟器 vm版,怎样用vmware虚拟机安装android模拟器
  14. suse下oracle静默安装,SUSE Linux Enterprise 11SP1静默安装Oracle 11gR2说明文档.doc
  15. 重磅 | 逆天操作,修图神器Photoshop,真的可以,完美移植到手机上了
  16. 互联网运营必须掌握的专业术语
  17. xshell免费版 正版,非xshell破解版
  18. linux如何查看内存大小
  19. redis课件DIY
  20. Android uart driver

热门文章

  1. 东北大学自学考试计算机网络专业(独立本科段)
  2. 神一样的CAP理论在微服务中是如何应用的?
  3. 淘宝稳定获取商品主图,JAVA代码示例纯技术交流
  4. Ubuntu上Pulse Secure不能用 openconnect来救急~
  5. 【论文阅读】社交网络传播最大化问题-02
  6. NewCoder 排队
  7. 搞 Java 2022年薪 40W 是什么水平?
  8. 第八届蓝桥杯单片机完整程序
  9. 泰拉瑞亚直连服务器怎么进,泰拉瑞亚1.3联机教程 最新steam直连教程
  10. Unity 鼠标拾取