将空字符串返回为NULL

时间:2010-06-10 19:55:25

标签: sql vba excel-vba null excel

我有一个列表框选择,我希望当用户为它产生的空字符串选择null时,从SQL表中提取空值。

这就是我现在所拥有的。空字符串不返回任何内容,因为表中没有空字段。

SELECT * FROM dbo.Table WHERE ID = " & TextBox2.Text & " and And Field1 IN (" & Msg1 & ")

我该如何编码?

3 个答案:

答案 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 & ")")

是的,它很粗糙 不应该用这种方式写查询。

编辑:已更正。请检查。