繁体   English   中英

“其中[值]不为空”的案例声明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM