SQL 服务器 - WHERE 中的案例(THEN IS NULL ELSE IS NOT NULL)
SQL SERVER - CASE in WHERE (THEN IS NULL ELSE IS NOT NULL )
我看到这个 link 找到了我的问题的解决方案:
CASE in WHERE, SQL Server
但是,在我的例子中,我需要评估当参数具有特定值时,它会评估一个字段是否为空,例如:
WHERE (CASE @parameter WHEN 1 THEN a.fieldOne IS NULL ELSE a.fieldOne IS NOT NULL END)
但这对我不起作用...
编辑 1
例如当@parameter = 1
SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NULL)
而当@parameter = 0
SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NOT NULL)
您不能像您尝试的那样对查询的 return 部分使用 case
表达式,只能使用值。
但是,您可以使用逻辑运算符模拟他的行为:
WHERE (@parameter = 1 AND a.fieldOne IS NULL) OR
(@parameter <> 1 AND a.fieldOne IS NOT NULL)
我看到这个 link 找到了我的问题的解决方案:
CASE in WHERE, SQL Server
但是,在我的例子中,我需要评估当参数具有特定值时,它会评估一个字段是否为空,例如:
WHERE (CASE @parameter WHEN 1 THEN a.fieldOne IS NULL ELSE a.fieldOne IS NOT NULL END)
但这对我不起作用...
编辑 1
例如当@parameter = 1
SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NULL)
而当@parameter = 0
SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NOT NULL)
您不能像您尝试的那样对查询的 return 部分使用 case
表达式,只能使用值。
但是,您可以使用逻辑运算符模拟他的行为:
WHERE (@parameter = 1 AND a.fieldOne IS NULL) OR
(@parameter <> 1 AND a.fieldOne IS NOT NULL)