ASP 记录集中数据库 NULL 值的经典检查
ASP Classic check for database NULL value in Recordset
我正在获取一个 ADODB 记录集,我需要检查 ASP Classic 中可为空列的值。我怎么知道它是否为空? ASP Classic 中不存在 AFAIK IsDBNull,所有 Null 测试人员都询问对象是否为 null,而不是它的值。
例如,我有包含列 RS("myCol")
的记录集 RS
。在数据库中,myCol 是可空位,因此值可以是 {0, 1, NULL}
.
如何测试 RS("myCol") = NULL
?看来,如果我从字面上 运行 进行比较,它只会告诉我对象 RS("myCol") 是否为 Null,而不会告诉我请求的字段的值是否为 "database" null。
对于 nullable bit
类型的数据库列 myCol
,包含该列的 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
- 如果数据库值为空则
Len(RS("myCol")&"") = 0
试试这个,如果你使用的是 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
在服务器端Javascript你必须测试
if (RS("myCol").Value))
而不是
if (RS("myCol")))
所以您可能需要在 VBScript 中使用
IF IsNull(RS("myCol").Value) THEN
实际测试值而不是对象。
这对我有用:
Function A9000_Coalesce(SqlValue, ValueIfNull)
If VarType(SqlValue) = vbNull Then
A9000_Coalesce = ValueIfNull
Else
A9000_Coalesce = SqlValue
End If
End Function
我正在获取一个 ADODB 记录集,我需要检查 ASP Classic 中可为空列的值。我怎么知道它是否为空? ASP Classic 中不存在 AFAIK IsDBNull,所有 Null 测试人员都询问对象是否为 null,而不是它的值。
例如,我有包含列 RS("myCol")
的记录集 RS
。在数据库中,myCol 是可空位,因此值可以是 {0, 1, NULL}
.
如何测试 RS("myCol") = NULL
?看来,如果我从字面上 运行 进行比较,它只会告诉我对象 RS("myCol") 是否为 Null,而不会告诉我请求的字段的值是否为 "database" null。
对于 nullable bit
类型的数据库列 myCol
,包含该列的 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
- 如果数据库值为空则
Len(RS("myCol")&"") = 0
试试这个,如果你使用的是 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
在服务器端Javascript你必须测试
if (RS("myCol").Value))
而不是
if (RS("myCol")))
所以您可能需要在 VBScript 中使用
IF IsNull(RS("myCol").Value) THEN
实际测试值而不是对象。
这对我有用:
Function A9000_Coalesce(SqlValue, ValueIfNull)
If VarType(SqlValue) = vbNull Then
A9000_Coalesce = ValueIfNull
Else
A9000_Coalesce = SqlValue
End If
End Function