'where [value] is not null' 的案例陈述

Case statement for 'where [value] is not null'

我见过很多 SO 问题,其中有人在 case 语句中测试 NULL 值,但与此问题的性质无关。我希望 case 语句的 return 成为 where 子句的 'is not null' 表达式。

这是我的:

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
)

这给出了错误:

Incorrect syntax near the keyword 'is'.

简而言之,如果测试值不是空字符串,那么我不希望 table1 中包含 another_value=NULL 的行。

我的程序需要通过2个case

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,'') = '')