【发布时间】:2015-07-14 23:22:41
【问题描述】:
我见过很多这样的问题,其中有人在 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
【问题讨论】: