我有一个列表框选择,我希望当用户为它产生的空字符串选择null时,从SQL表中提取空值。
这就是我现在所拥有的。空字符串不返回任何内容,因为表中没有空字段。
SELECT * FROM dbo.Table WHERE ID = " & TextBox2.Text & " and And Field1 IN (" & Msg1 & ")
我该如何编码?
答案 0 :(得分:1)
使用If
声明。当您的文本框为空时,让SQL字符串包含“ID为null”而不是附加文本框的值。
If (TextBox1.Text = "") Then
' use Is Null in your sql statement
Else
' use the textbox text value in your sql statement
End If
(假设你在谈论文本框而不是Msg1。)
答案 1 :(得分:1)
dim sql
If (TextBox2.Text = null) Then
sql = "SELECT * FROM dbo.Table WHERE ID is null and And Field1 IN (" & Msg1 & ")"
Else
sql = "SELECT * FROM dbo.Table WHERE ID = " & TextBox2.Text & " and And Field1 IN (" & Msg1 & ")"
End If
请参阅@John Saunders评论,你冒着sql注入的风险。将参数传递给sql查询时,请务必使用parameters,而不是连接字符串。
答案 2 :(得分:0)
SELECT * FROM dbo.Table WHERE ID = " & TextBox2.Text &
" And Field1 " & IIF(Trim(Msg1) = "", "IS NULL", "IN (" & Msg1 & ")")
是的,它很粗糙 不应该用这种方式写查询。
编辑:已更正。请检查。