sql - where子句为NULL

时间:2012-03-20 22:04:54

标签: sql

我的where子句

中有以下内容
    WHERE st.State =  @St

在这种情况下,@ St为NULL。如果st.State也为NULL,则不会返回TRUE。 在这种情况下,我如何做我的where子句?

我在考虑

    WHERE st.State =  @St AND @St IS NULL 

但不确定这是否会给我带来太多好处。

7 个答案:

答案 0 :(得分:4)

WHERE st.State = @St OR (@St IS NULL AND st.State IS NULL)

答案 1 :(得分:4)

您可以使用以下内容:

WHERE ( @St IS NULL AND st.State IS NULL ) OR ( @St = st.State)

答案 2 :(得分:2)

尝试

 WHERE (st.State = @St or (st.State is NULL and @St is NULL))

答案 3 :(得分:2)

您可能需要在不同的数据库上执行不同的操作,但一种常规方法是

WHERE st.State = @St OR (@St is NULL and st.State is NULL)

答案 4 :(得分:2)

不确定你正在使用什么系统,但我喜欢SQL Server系统上的IsNull:

WHERE (IsNull(st.State,'none')=IsNull(@St,'none')

答案 5 :(得分:0)

检查一下。这将有效。

ISNULL(st.State,'')= ISNULL(@St,'')

答案 6 :(得分:0)

  select column1 from Table1
  where (@param is null and column2 is null)
  or (column2 = @param)