【问题标题】:Writing a query for alternative column names as mentioned below eg为下面提到的替代列名编写查询,例如
【发布时间】:2020-08-27 22:37:05
【问题描述】:

如果地址缺失,查询会显示电子邮件 ID。如果地址和电子邮件都丢失,则显示“NA”。将别名命名为 CONTACT_DETAILS。考虑到上述示例,请帮助编写查询。

SELECT 
  CASE WHEN 1 THEN ifnull(address,email_id)  
       WHEN 2 THEN ifnull(email_id,'NA')
  END
as contact_details
FROM customers;

我尝试过的查询

【问题讨论】:

  • COALESCE() 函数返回列表中的第一个非空值。因此,如果 Address 为 null,您可以使用它来显示 email_id,如果两者都为 null,则可以使用它来显示 'NA'。你会尝试 SELECT COALESCE(address, email_id, 'NA') AS contact_details FROM customers
  • 什么是WHEN 1?这很奇怪。

标签: sql if-statement null conditional-statements na


【解决方案1】:

你可以使用COALESCE

SELECT COALESCE(address,email_id, 'NA') contact_details FROM customers;

来自文档:

返回列表中的第一个非 NULL 值,如果没有非 NULL 值,则返回 NULL。

【讨论】:

    【解决方案2】:

    您可以使用COALESCE功能。您的查询将是这样的

    SELECT COALESCE(address, email_id, 'NA') as contact_details
    FROM customers;
    

    据我所知,它在 oracle 和 mysql 中可用。 使用这些链接作为参考:

    1. https://www.geeksforgeeks.org/mysql-coalesce-function/
    2. https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions023.htm#i1001341

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 2021-05-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      相关资源
      最近更新 更多