我已在我的where子句SQL - where子句NULL
WHERE st.State = @St
以下在这种情况下@St为NULL。如果st.State也是NULL,则不会返回TRUE。 在这种情况下,我该如何处理where子句?
我在想
WHERE st.State = @St AND @St IS NULL
但不能肯定是否会买我多少。
我已在我的where子句SQL - where子句NULL
WHERE st.State = @St
以下在这种情况下@St为NULL。如果st.State也是NULL,则不会返回TRUE。 在这种情况下,我该如何处理where子句?
我在想
WHERE st.State = @St AND @St IS NULL
但不能肯定是否会买我多少。
您可以使用下列内容:
WHERE (@St IS NULL AND st.State IS NULL) OR (@St = st.State)
WHERE st.State = @St OR (@St IS NULL AND st.State IS NULL)
尝试
WHERE (st.State = @St or (st.State is NULL and @St is NULL))
您可能需要在不同的数据库做不同的事情,而是一个普遍的做法是
WHERE st.State = @St OR (@St is NULL and st.State is NULL)
不知道你是什么系统但是我很喜欢SQL Server系统上的IsNull:
WHERE (IsNull(st.State,'none')=IsNull(@St,'none')
检查这一点。这将工作。
ISNULL(st.State, '')= ISNULL(@St, '')
select column1 from Table1
where (@param is null and column2 is null)
or (column2 = @param)
请提供更为详细的解释为什么这会起作用。 – Aibrean 2015-07-30 15:04:48
您正在使用什么数据库管理系统? – 2012-03-20 22:16:12