asp isnull为什么和""不一样
说到isnull,咱们得先弄清楚这是个啥东西。简单来说,isnull是VB里用来判断值是不是null的一个函数,而SQL语句里也有类似的东西,就是“is null”这个谓词。举个例子,你写个SQL:
select * from 表名 where 列名 is null
这个表示啥?表示筛选出所有该列值是空的记录。这里的“空”是数据库意义上的null,也就是没有任何值的状态。
但是,有个问题!好多时候,数据库里的字段允许为空,但如果你没有填东西进去,有的可能是null,有的可能是空字符串"",那这两者可不一样哟!null是啥都没有,而""是字符串长度为0,能装能存,但没内容。
在VB脚本里,isnull(foo)返回true,说明foo真的是null,跟""那个空串不一样!你用= ""来判断,是判断字段是不是空字符串,这两个用法可一定要区分清楚,不然容易犯傻耶。

asp中怎么判断数据库有没有记录以及避免程序报错
好啦,说说大家特别关心的怎么判断数据库里有没有记录。这里有几个点超重要,咱们来具体讲:
-
用rs.BOF和rs.EOF判断是否有记录
很多asp小伙伴会写:
asp Set rs = conn.Execute("select * from 表 where 条件") If rs.BOF And rs.EOF Then Response.Write "没记录哦" Else Response.Write "有记录,接着干别的" End If
这段代码的意思是,当rs的开头和结尾都到头时,代表结果集合里根本没有数据。这时候你再去访问rs("字段"),你肯定嗷,就会炸! -
避免直接访问空结果集的字段导致错误
有个实际问题超坑,就是你写查询条件可能写错了,结果啥都没查出来,紧接着就直接用rs("字段名"),结果代码报错。这时候,你必须加上
asp If Not (rs.BOF And rs.EOF) Then '安全访问字段啦 value = rs("字段名") Else Response.Write "没有匹配数据,程序先歇会吧" End If
这样才能稳稳地避免程序崩溃,超级关键。 -
判断数据字段是否为空时该怎么写
比如,你查个DATETIME字段,要知道它有没有内容,可以写:
sql select * from 表名 where Isnull(字段名) = true
这样呢,数据库里该字段是null,它会帮你筛出来。
另外,想显示“暂无数据”或者“无图片”,也超简单:
If rs.EOF Then
Response.Write "暂无图片"
Else
Do While Not rs.EOF
'遍历显示数据
rs.MoveNext
Loop
End If
这样子用户体验也棒棒的。
![]()
相关问题解答
-
isnull和= ""有什么区别吗?
哎呀,这俩可不太一样!isnull判断的是值根本不存在,是数据库里的空值概念,而= ""是判断字符串是空的没内容,比如“”就是你有一个空壳壳的字符串,但是不是null哦。简单说,isnull针对“没东西”,= ""针对“有但空”,千万别弄混啦! -
怎么判断asp程序里查询结果有没有数据?
你只要用了rs.BOF And rs.EOF这个组合就对啦!如果俩都是true,说明数据根本没有,别急着用rs("字段"),否则一炸,引擎说你错误。写成If rs.BOF And rs.EOF Then...Else...End If,稳拿! -
遇到空结果集想显示“暂无内容”咋办?
完全没压力!你加个判断If rs.EOF Then Response.Write "暂无内容" Response.End就让页面友好地告诉访客“没东西啊兄弟”,而不是让程序炸。 -
如何判断数据库DATETIME字段是不是空值?
放心,这个你可以直接用SQL里的Isnull(字段名) = true条件来判断,超方便的!不用加花里胡哨的东西,查询就是判断是空(true)还是非空(false),特别靠谱。
发布评论