ASP Classic检查Recordset中的数据库NULL值

时间:2016-08-12 23:27:16

标签: asp-classic null adodb

我得到了一个ADODB Recordset,我需要检查ASP Classic中可空列的值。我怎么知道它是否为空? AFAIK IsDBNull在ASP Classic中不存在,所有Null测试人员都会询问该对象是否为空,而不是其值。

例如,我的Recordset RS包含一列RS("myCol")。在数据库中,myCol是一个可以为空的位,因此值可以是{0, 1, NULL}

如何测试RS("myCol") = NULL?似乎如果我真的运行该比较,它只会告诉我对象RS(" myCol")是否为空,而不是所请求的字段的值是否为"数据库"空。

4 个答案:

答案 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将如下:

  • 如果数据库值为0,则RS("myCol") = Empty = False = 0
  • 如果数据库值为1,则RS("myCol") = True = 1
  • 如果数据库值为Null,则为IsNull(RS("myCol")) = True = 1

另一种解决方案:

  • 如果数据库值为0,则为Len(RS("myCol")&"") = 5
  • 如果数据库值为1,则为Len(RS("myCol")&"") = 4
  • 如果数据库值为Null,则为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

实际测试值而不是对象。