【发布时间】:2014-01-21 01:47:00
【问题描述】:
假设我们有一个名为Data 的表,其中包含Id 和Weather 列。该表中的其他列对于这个问题并不重要。 Weather 列可以为空。
我想显示Weather 符合条件的所有行,但如果weather 中有空值,则显示空值。
到目前为止我的 SQL:
SELECT *
FROM Data d
WHERE (d.Weather LIKE '%'+COALESCE(NULLIF('',''),'sunny')+'%' OR d.Weather IS NULL)
我的结果是错误的,因为如果条件不正确(假设用户输入错误),该语句还会显示 Weather 为 null 的值。
我找到了类似的主题,但没有找到合适的答案。 SQL WHERE clause not returning rows when field has NULL value
请帮帮我。
【问题讨论】:
-
查询将返回 Weather 与用户输入的内容相似或 Weather 为空的行。您是说用户输入的内容除了 'sunny' 之外什么都不想返回,甚至是 null 值?
-
是的,没错。
-
没看懂你的要求!!!
-
在这种情况下,您需要有一个有效天气值列表并在数据库中对其进行验证,或者在调用数据库的客户端中验证 - 在调用数据库之前 - 他们已经输入在有效的天气值中。
-
似乎很复杂(我有一个很大的数据库),如果我没有找到好的解决方案,我会尝试。谢谢。
标签: sql sql-server null where-clause