[英]Case statement for 'where [value] is not null'
我见过很多SO问题,有人在case语句中测试NULL值,但是这个问题的性质都不是。 我希望case语句的返回为where子句的“不为空”表达式。
这就是我所拥有的:
INSERT INTO table1 (Id) (
SELECT DISTINCT AId AS Id
FROM table2 As t2
INNER JOIN table3
ON (
...
)
WHERE CASE
WHEN test_value <> '' THEN (another_value IS NOT NULL)
END
)
这给出了错误:
关键字“ is”附近的语法不正确。
简而言之,如果测试值不是空字符串,那么我不希望table1中具有another_value = NULL的行。
我的程序需要通过2个案例
Case 1:
Row# test_value another_value ....
1 'tst' '919'
2 'tst' NULL
ONLY ROW ONE SHOULD BE INSERTED
Case 2:
Row# test_value another_value ....
1 '' '919'
2 '' NULL
BOTH ROWS SHOULD BE INSERTED
您可以执行以下操作:
WHERE CASE
WHEN test_value <> '' AND another_value IS NOT NULL THEN another_value
END
尝试这个:
WHERE ((isnull(test_value,'') <> '' and ISNULL(another_value,'') <> '') OR ISNULL(test_value,'') = '')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.