mysql - MySQL返回结果为NULL时选择默认值

标签 mysql sql coalesce

以下查询运行良好,但我想输入选项,如果返回的电子邮件为 NULL,则我输入“example@google.com”或类似内容。我已经阅读了一些函数,例如 COALESCE(EMAIL,"example@google.com"),但我不确定该函数在脚本中的位置。您能否指导我应该在哪里注入(inject)该功能,以及我是否朝着正确的方向前进?谢谢你。

SELECT LCASE(LOGIN_NAME) as uniqueid, CONCAT('sha-512:', PASSWD) as password, REPLACE(CONTACT_NAME, '"', '') as name, \
     CONCAT('unit,', \
       MAX(CASE WHEN USER_TYPE = 'custom' THEN  \
          'location_employee'  \
        WHEN (LOGIN_NAME != 'link' AND USER_TYPE = 'owner' AND (UA.PARTY_SITE_ID IS NULL OR NOT EXISTS (SELECT U2.ID FROM CUSTOMER_DATA.USER_ACCESS U2 WHERE U2.USER_ID=U.ID AND (U2.PARTY_SITE_ID IS NULL OR U2.PARTY_SITE_ID = '')) ) )THEN  \
          'master'  \
        ELSE  \
          'location'  \
        END)) AS role, \
     MAX(EMAIL) as email, \
     MAX(PHONE) as phone, \
     MAX(FAX) as fax \
     FROM ORACLE_EXPORTS.SHIP_TO ST, \
     CUSTOMER_DATA.USER U \
     JOIN CUSTOMER_DATA.USER_ACCESS UA ON U.ID = UA.USER_ID \
     WHERE ( \
     (UA.PARTY_SITE_ID IS NULL AND ST.CUSTOMER_ID = UA.CUSTOMER_ID ) \
     OR \
     (ST.PARTY_SITE_ID IS NOT NULL AND ST.PARTY_SITE_ID = UA.PARTY_SITE_ID ) \
     ) \
     AND U.LOGIN_NAME IN ( ? ) \
     GROUP BY LOGIN_NAME

最佳答案

使用MySQL的IFNULL函数,

IFNULL(MAX(EMAIL), "example@google.com") as email

关于mysql - MySQL返回结果为NULL时选择默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19839398/

相关文章:

php - CArrayDataProvider 显示空值

SQL Server删除涉及两个表的查询

mysql合并数据分配相同的ID

MySQL : turn fraction strings into number

mysql - mysql 中行的最大值

mysql - 比较表中的行的异同

mysql - SQL 中的重复行(链接 3 个表时)

mysql - 如何在 MySQL 中使用 Coalesce

mysql - mysql 的 collesce 问题

sql - MSSQL 2008 中的行合并,