我得到了一个ADODB Recordset,我需要检查ASP Classic中可空列的值。我怎么知道它是否为空? AFAIK IsDBNull在ASP Classic中不存在,所有Null测试人员都会询问该对象是否为空,而不是其值。
例如,我的Recordset RS
包含一列RS("myCol")
。在数据库中,myCol是一个可以为空的位,因此值可以是{0, 1, NULL}
。
如何测试RS("myCol") = NULL
?似乎如果我真的运行该比较,它只会告诉我对象RS(" myCol")是否为空,而不是所请求的字段的值是否为"数据库"空。
答案 0 :(得分:4)
试试这个,如果您使用MS SQL
,它应该可以工作IF IsNull(RS("myCol")) = False THEN
IF RS("myCol") THEN
Response.Write "myCol is TRUE"
ELSE
Response.Write "myCol is False"
END IF
ELSE
Response.Write "myCol is NULL"
END IF
或尝试使用
IF RS("myCol")<>"" THEN
IF RS("myCol") THEN
Response.Write "myCol is TRUE"
ELSE
Response.Write "myCol is False"
END IF
ELSE
Response.Write "myCol is NULL"
END IF
答案 1 :(得分:0)
对于myCol
类型的数据库列nullable bit
,包含该列的Recordset RS
将如下:
RS("myCol") = Empty = False = 0
RS("myCol") = True = 1
IsNull(RS("myCol")) = True = 1
。另一种解决方案:
Len(RS("myCol")&"") = 5
Len(RS("myCol")&"") = 4
Len(RS("myCol")&"") = 0
答案 2 :(得分:0)
这对我有用:
Function A9000_Coalesce(SqlValue, ValueIfNull)
If VarType(SqlValue) = vbNull Then
A9000_Coalesce = ValueIfNull
Else
A9000_Coalesce = SqlValue
End If
End Function
答案 3 :(得分:-1)
在服务器端Javascript中你必须测试
if (RS("myCol").Value))
而不是
if (RS("myCol")))
所以可能在VBScript中你需要使用
IF IsNull(RS("myCol").Value) THEN
实际测试值而不是对象。