我正在尝试创建一个 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 重新创建了它,但出于各种原因,我更喜欢在本机代码中创建它。
我会很感激任何意见。谢谢。