Oracle SQL CASE语句检查多个条件

时间:2014-08-15 19:32:32

标签: sql oracle

我正在使用Oracle SQL并尝试实现以下逻辑: 在PS_EMPLOYEES上,如果ADDRESS3不为空且不等于' ',使用ADDRESS2填充此字段,使用ADDRESS1填充此字段。

我可以让以下部分正常工作,但我如何确保它也不为空呢?

, 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

2 个答案:

答案 0 :(得分:1)

您可以使用CASEAND

OR语句中结合您喜欢的任何条件
(CASE WHEN t2.address3 IS NOT NULL AND
           t2.address3 != ' '
      THEN substr( t2.address2, 1, 30 )
      ELSE substr( t2.address1, 1, 30 )
  END)

答案 1 :(得分:0)

我认为你应该能够在你的案子条款中使用或陈述

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