数据字段的空值以及记录的空值,返回字段和记录的值不存在

原创 2016年05月30日 16:50:24
在编写sql语句时,如果要和null做比较判断,必须使用is null 或者is not null,不能使用=null 或者!=null这种比较形式。

原因是,null是一种特殊的值,既不是0,也不是'''',而表示“空”,即不存在的意思。所以,是无法像字符串和数字那样进行比较的。is null就表示不存在,is not null就表示存在。

1、真正的空值,也就是“没有输入的值”,可以出现在大多数类型的字段中(如果没有别的约束条件),SQL server中表示为null,显示为<NULL>,手工在SQL server企业管理器中输入的方法是按Ctrl+0。它在.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个值是不是空值,要用“is null”而不是“= null”;处理空值有个ISNULL函数,它使用指定的值替换null。用ADO.NET从数据库得到的空值无法自动转化为空字符串或Nothing,须手动检测:如果得到System.DBNull.Value,则赋给数据对象Nothing或其它自定义的有意义的值。


例如:出库数量为空值输出0,出库数量不为空值输出实际出库数量。

IIF(AA.CC is not null,AA.CC,0) AS 出库数量


 2、空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL server中表示为'',显示为空白,手工在SQL server企业管理器中输入时清空一个单元格即可。它在.NET中对应System.String.Empty,也就是我们常用的""。在T-SQL命令中处理空字符串和处理一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也和一般的字符串没什么区别。

相关的概念还有VB.NET中的Nothing和对应于C#.NET中的null(注意这个null是C#.NET中的null而非SQL Server中null),它们在.NET中是表示不引用任何对象的空引用的值,在传入SQL server时,根据不同的上下文环境,可能存为真正的空值(比如在更新一个字符串类型的字段值时),也可能调用在SQL server中自定义的默认值(比如传给一个有默认值的存储过程参数),也可能因为无法进行类型转换而引发.NET异常。因此在用ADO.NET向SQL server中存储数据时要慎用Nothing。


3、记录的空值:即在数据表中没有这个记录但由于采用了LEFT JOIN需要表达为零,又或者当没有记录是显示无记录的提示。

<%
   Set rs10=server.CreateObject("adodb.recordset")
   sqlselect10="select Count(INnum) as 有无入库 From inck where inck.ToCK = 'JS'"
   rs10.open sqlselect10,cn

   If rs10(0)=0 then
%>
  <table cellspacing="0" cellpadding="10" border="0" width="980">
   <tr height="30" bgColor="#333">
    <td CLASS="namesyh" height="30">
     <font color="#000000" size="4"><h3>未录入库存信息!</h3></font>
    </td>
   </tr>
  </table>
<%
   Else
   ……
   End if
%>



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据库--sql 查询字段如果为null 则返回0的写法

oracle select nvl(字段名,0) from 表名; sqlserver select isnull(字段名,0) from 表名; mysql select ifnull(字段名...

查询出某字段值不为空的记录的SQL语句怎么写

select * from 表名 where 字段名 is not null

[神奇的问题啊,GetProcAddress一个不存在的API时,返回非空值,且指向另一个API]谜团解开,错不在GetProcAddress

if (::GetProcAddress(::GetModuleHandleA("kernel32"),"GetSystemWow64DirectoryA")== ::GetProcA...

从查询某个字段为空值的记录说起

错误类型:查询数据库出错.结果:没有记录.     话说几天前需要查询字段为空值的记录,百度了一下,说用字段名is null,于是查出来后激动得在笔记中记上一笔:查询字段为空值的记录时... ...

mybatis返回map类型数据空值字段不显示(三种解决方法)

一、查询sql添加每个字段的判断空IFNULL(rate,'') as rate二、ResultType利用实体返回,不用map三、springMVC+mybatis查询数据,返回resultType...

SQL Server如何保证可空字段中非空值唯一

今天同学向我提了一个问题,是SQL Server中一个关于“如何保证可空字段中非空值唯一”的问题,我觉得蛮有意思,现记录下来大家探讨下。 问题是:在一个表里面,有一个允许为空的字段,空是可以重复...

Springmvc @ResponseBody与@RequestBody忽略空值字段

技术背景    接受参数部分:前后端有时候需要以json格式的数据进行传输,springmvc默认为后台封装了对json字符串解析为java对象的解析器.前端传值如果为json字符串,对应的请求处理...

数据库字段类型是Number,JSP界面传过来空值的问题

在JSP界面中存在一个文本框,输入的是金额

关于解决对象空值转换成JSON丢失字段的问题

这个是最近刚开发的迭代中遇到的问题频繁的转换JSON  结果导致空值字段丢失   但是对于前端来说即使字段值为空也需要返回所以这个时候就需要做处理  我是用的是  import com.alibaba...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据字段的空值以及记录的空值,返回字段和记录的值不存在
举报原因:
原因补充:

(最多只允许输入30个字)