'其中[value]不为空的案例陈述'

时间:2015-07-14 13:09:04

标签: sql null case where

我已经看到很多SO问题,其中有人在案例陈述中测试NULL值,但这个问题没有任何性质。我希望case语句的返回是'不是null' 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
)

这给出了错误:

  

关键字&#39;附近的语法错误是&#39;。

简而言之,如果测试值不是空字符串,那么我不想在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

2 个答案:

答案 0 :(得分:0)

你可以这样做:

WHERE CASE
        WHEN test_value <> '' AND another_value IS NOT NULL THEN another_value  
      END

答案 1 :(得分:0)

试试这个:

WHERE ((isnull(test_value,'') <> '' and ISNULL(another_value,'') <> '') OR ISNULL(test_value,'') = '')