关闭

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

605人阅读 评论(0) 收藏 举报
分类:
在编写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
%>



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:86526次
    • 积分:1533
    • 等级:
    • 排名:千里之外
    • 原创:69篇
    • 转载:2篇
    • 译文:0篇
    • 评论:11条
    博主描述
    最新评论