我正在尝试创建一个 T-SQL case 语句来根据字段是否NULL
包含值或是否包含值来过滤查询。如果您可以分配NULL
或NOT NULL
作为案例的结果,那将很简单,但这似乎是不可能的。
这是伪代码:
WHERE DateColumn = CASE @BitInput
WHEN 0 THEN (all null dates)
WHEN 1 THEN (any non-null date)
WHEN NULL THEN (return all rows)
据我了解,WHEN 0
可以通过根本不提供WHEN
条件(返回NULL
值)来实现条件。
该WHEN 1
条件似乎可以使用通配符,但我收到有关类型转换的错误。将列分配给自身可以解决此问题。
我不知道该怎么办WHEN NULL
。我的内部逻辑似乎认为将列分配给自身应该可以解决这个问题,但它并没有如上所述。
我已经使用动态 SQL 重新创建了它,但出于各种原因,我更喜欢在本机代码中创建它。
我会很感激任何意见。谢谢。