简体   繁体   English

Oracle SQL CASE语句检查多个条件

[英]Oracle SQL CASE statement checking multiple conditions

I am using Oracle SQL and am trying to fulfill the following logic: On PS_EMPLOYEES, if ADDRESS3 is not null and not equal to ' ', populate this field with ADDRESS2 else, populate this field with ADDRESS1. 我正在使用Oracle SQL并尝试实现以下逻辑:在PS_EMPLOYEES上,如果ADDRESS3不为null且不等于'',则用ADDRESS2填充此字段,否则,用ADDRESS1填充此字段。

I am able to get the following part working, but how do I make sure it isn't null too? 我可以使以下部分正常工作,但是如何确保它也不为null?

, ADDRESS_LINE1 = 
    SELECT (CASE WHEN t2.ADDRESS3 != ' ' THEN substr(t2.ADDRESS2, 1, 30) ELSE substr(t2.ADDRESS1, 1, 30) END)
    FROM PS_EMPLOYEES t2
    WHERE t2.EMPLID = PS_Z_EXS_EMP_TBL_T.EMPLID

You can combine whatever conditions you like in a CASE statement using AND and OR 您可以使用ANDORCASE语句中组合任意条件

(CASE WHEN t2.address3 IS NOT NULL AND
           t2.address3 != ' '
      THEN substr( t2.address2, 1, 30 )
      ELSE substr( t2.address1, 1, 30 )
  END)

我认为您应该可以在case子句中使用or语句

SELECT (CASE WHEN t2.ADDRESS3 != ' ' or t2.ADDRESS3 is null THEN substr(t2.ADDRESS2, 1, 30) ELSE substr(t2.ADDRESS1, 1, 30) END)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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