12

次のクエリは正常に実行されますが、返されたメールが NULL の場合に "example@google.com" などを入力するというオプションを入力したいと考えています。など、そのためのいくつかの関数を読みましたがCOALESCE(EMAIL,"example@google.com")、スクリプト内でのその関数の配置についてはわかりません。その関数をどこに挿入する必要があるか、また正しい方向に進んでいるかどうかを教えてください。ありがとうございます。

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
4

3 に答える 3

33

MySQL の IFNULL 関数を使用して、

IFNULL(MAX(EMAIL), "example@google.com") as email
于 2015-05-01T18:02:00.487 に答える
14

さて、どこでメールを取得しようとしていますか?

COALESCE(MAX(EMAIL), 'example@google.com') as email
于 2013-11-07T15:11:11.673 に答える
2
SELECT coalesce(field_or_derived_value_that_could_be_null, "new value here"), ...
FROM ...
WHERE ...
于 2013-11-07T15:11:02.063 に答える