奇怪的空值问题
不规范的业务操作中经常会遇到如下情况:
1、表格中的如价格、件数、重量等字段,直接放空;
2、数据库中同样的表示数字的int、float,查询后为空值
好了,这样问题就来了:
问题一:其实也就是平常不能再平常的的字符转数字,不过刚好字符为空值,这时不管用int.prase,还是convert等等其它,肯定报“空值”错误!
答:判断一下,空值不如纳入计算范畴不就完了吗?如果非得纳入计算呢?
好,假定要转换的字符为str,结果是要把这些空值的字符设定为“0”:
//string自带
string.IsNullOrEmpty(str)?"0":str
//??判断
str??"0"
//常用拼接判断
if(str==""||str==null||str==DBNull){str="0";}
正常这种字符空值判断,都是没问题的,但是要把这些字符空值转换成数字时,也就是需要int.prase(str)的结果时,你就会发现只有string.IsNullOrEmpty 有效,其它2种都会报空错,为什么?
问题二:来看一下简单sql语句查询字段类型分别是 varchar、int、float
select COUNT(INBOUND_AWB) as mTicket,SUM(INBOUND_QTY) as mQty,SUM(INBOUND_WEIGHT) as mWeight from INBOUNDCARGO_TB where INBOUND_PICKTIME BETWEEN '2021-08-1' AND '2021-08-31' AND INBOUND_AWB like '%hawb%'
显示的结果:
查询为空的结果,字段类型不同显示的结果,也不一样;为什么是字符的为0,数字的反而为Null呢?
关于这个问题,已有答案:SUM有数据据则正常统计,无数据返回NULL,无关字段类型;count为计数,无数据时返回计算0
问题三:sql查询语句 “!”,非某某字符,查询的结果不包括null值(勉强算是空值问题,所以一起提问了)
查询语句:
SELECT * from OUTSIDEDELIVERY_TB where OUT_SN='F003088000' and OUT_STATUS!='作废'
平时也常用到“!”运算,但最近偶然发现,以上查询的结果,居然不包括null值(即OUT_STATUS为null值时,以上语句查询未果)
好吧,只能修改下:
SELECT * from OUTSIDEDELIVERY_TB where OUT_SN='F003088000' and (OUT_STATUS!='作废' or OUT_STATUS is NULL)
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)