SQL返回电子邮件,如果没有电子邮件返回电话号码,如果没有电话号码返回单元格(所有一列)

时间:2017-02-17 17:28:53

标签: sql oracle

这是我收到的一个例子,但经过研究后我仍然陷入困境。他希望我返回电子邮件地址,如果没有电子邮件返回电话号码,如果没有电话号码返回小区(全部一列)。我已加入我的表格,但不确定是否应使用text/htmlsetShareIntent() / WHERE NOT EXISTS

IF

4 个答案:

答案 0 :(得分:0)

您可以使用将返回第一个非空值的COALESCE function

答案 1 :(得分:0)

你可以使用coalesce函数返回第一个非null结果,不知道返回单元格是什么意思,但我认为你有了这个想法

 with xx as
     (select 'email@mail.com' email, null telephone, null cell
        from dual
      union all
      select null email, '123456' telephone, null cell
        from dual
      union all
      select null email, null telephone, '5' cell
        from dual)
    select coalesce(email, telephone, cell) first_not_null from xx

答案 2 :(得分:0)

我最终让它像这样工作:

CASE WHEN TRIM(eml.email_address) IS NOT NULL THEN eml.email_address

WHEN TRIM(t.telephone_number) IS NOT NULL THEN 'H: (' || t.area_code || ')'               || SUBSTR(t.telephone_number, 1, 3) || '-' || SUBSTR(t.telephone_number, 4, 4)

WHEN TRIM(t2.telephone_number) IS NOT NULL THEN 'C: (' || t2.area_code || ')' || SUBSTR(t2.telephone_number, 1, 3) || '-' || SUBSTR(t2.telephone_number, 4, 4) 

 ELSE 'No Email/Phone Found'

END AS "EMAIL/PHONE"

答案 3 :(得分:-1)

这就是答案:

SELECT Case When eml.emailaddress is not null then eml.emailaddress
            When eml.emailaddress IS NULL
             AND t.Phonenumber is NOT NULL THEN t.Phonenumber
            Else t.cellNumber
        End as ContactInfo 
  FROM entity e
       LEFT OUTER JOIN telephone t ON t.id_number = e.id_number
       LEFT OUTER JOIN email eml ON eml.id_number = e.id_number