应用规则
Applying a rule
SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
您好,我正在尝试对电子邮件列的 select 应用规则。有时登录 ID 将是用户的电子邮件地址,如果电子邮件出现在登录 ID 中,我如何应用规则到 return 电子邮件列没有任何内容?任何帮助将不胜感激,谢谢。
我认为 case
表达式可以满足您的要求:
SELECT LOGINID,
(CASE WHEN LOGINID <> EMAIL THEN EMAIL END) as EMAIL,
ROLE
FROM (SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140
ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
) hh
CASE...WHEN
应该可以。基本上,您可以明确地处理这两种情况。
SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
CASE WHEN LTRIM(RTRIM(HOST0140.EMAIL)) = LTRIM(RTRIM(HOST0149.LOGINID)) THEN NULL ELSE LTRIM(RTRIM(HOST0140.EMAIL)) END AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
这将得到结果:
select LOGINID, EMAIL, ROLE FROM(SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY)
WHERE EMAIL NOT LIKE '%@%'
SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
您好,我正在尝试对电子邮件列的 select 应用规则。有时登录 ID 将是用户的电子邮件地址,如果电子邮件出现在登录 ID 中,我如何应用规则到 return 电子邮件列没有任何内容?任何帮助将不胜感激,谢谢。
我认为 case
表达式可以满足您的要求:
SELECT LOGINID,
(CASE WHEN LOGINID <> EMAIL THEN EMAIL END) as EMAIL,
ROLE
FROM (SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140
ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
) hh
CASE...WHEN
应该可以。基本上,您可以明确地处理这两种情况。
SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
CASE WHEN LTRIM(RTRIM(HOST0140.EMAIL)) = LTRIM(RTRIM(HOST0149.LOGINID)) THEN NULL ELSE LTRIM(RTRIM(HOST0140.EMAIL)) END AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY
这将得到结果:
select LOGINID, EMAIL, ROLE FROM(SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID,
LTRIM(RTRIM(HOST0140.EMAIL)) AS EMAIL,
LTRIM(RTRIM(HOST0149.USERKEY)) AS ROLE
FROM HOST0149 LEFT JOIN
HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY)
WHERE EMAIL NOT LIKE '%@%'