【问题标题】:Single SQL query to tackle NULL and non-NULL values处理 NULL 和非 NULL 值的单个 SQL 查询
【发布时间】:2014-03-04 23:00:27
【问题描述】:

我有一个存储过程,它的参数可以是 NULL 或非 NULL 值。 我需要在 WHERE 子句中比较这个参数。如果参数为非NULL,

where ...
and parameter = non-NULL-value

会起作用。

但是当参数为空时,它将不符合ANSI:

where ...
and parameter = NULL

我不想编写两个单独的查询。如何确保在同一查询中符合 ANSI?

【问题讨论】:

  • 当参数为NULL时,你想得到什么结果?
  • 您的第二个查询符合 ANSI。 where 子句总是返回 false。
  • 列是什么类型的?
  • 如果你的意思是查询谓词是由参数驱动的,看看here as well
  • @Gordon,实际上结果是UNKNOWN

标签: sql sql-server comparison ansi-sql


【解决方案1】:

假设值在@value 参数中传递给您的查询,您可以这样做:

SELECT *
FROM MyTable
WHERE (@value IS NOT NULL AND parameter = @value) -- Or simply parameter = @value
   OR (@value IS NULL AND parameter IS NULL)

【讨论】:

  • 这样就可以了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多