题
是否有类似isnull()或cocece()之类的东西,但没有检查零值,而是为空值。
例如:
SELECT cu.last_name, cu.first_name, cu.email, hu.email FROM
(SELECT DISTINCT c.first_name, c.last_name, c.email, c.household_id, h.head_of_household_id
FROM rd_customers c
JOIN rd_households h ON c.household_id = h.household_id
JOIN ad_registrations r ON r.customer_id = c.customer_id
JOIN ad_meeting_times a ON r.session_id = a.session_id and a.meeting_time_id = 203731) cu
LEFT JOIN rd_customers hu ON hu.customer_id = cu.head_of_household_id
如果第一列是空的,则我不想返回四列,而第三列则应该具有Cu.email或Hu.email的值! Isnull和Coalesce在这里不工作,我不知道为什么
解决方案
您可以随时使用案例:
select case when cu.email is null or cu.email = '' then hu.email
else cu.email end as ColumnName
from YourTable
其他提示
如果两个表达式不相等,则Nullif返回第一个表达式。如果表达式相等,则nullif返回第一个表达式类型的零值。
试试这个:
COALESCE(NULLIF(cu.email,''),NULLIF(hu.email,''))
如果cu.email和hu.email是空字符串或null的任何组合,将返回null
这将捕获null或空的cu.email,然后使用hu.email:
SELECT cu.last_name,
cu.first_name,
CASE WHEN ISNULL(cu.email, '') = '' THEN
hu.email
ELSE
cu.email
END AS email
FROM
(
SELECT DISTINCT c.first_name,
c.last_name,
c.email,
c.household_id,
h.head_of_household_id
FROM rd_customers c
JOIN rd_households h
ON c.household_id = h.household_id
JOIN ad_registrations r
ON r.customer_id = c.customer_id
JOIN ad_meeting_times a
ON r.session_id = a.session_id
AND a.meeting_time_id = 203731
) cu
LEFT JOIN rd_customers hu
ON hu.customer_id = cu.head_of_household_id
不隶属于 StackOverflow