在下面的查询中,如果两个条件都为真,则在ErrorMessage中更新最后一个条目。如果一个记录的国家/地区超过3个字符且HR_DOMAIN_Code的长度不等于3,那么ErrorMessage应该看起来像“无效国家”和“无效国家”。 'HR_DOMAIN_CODE'无效:
update A
set ErrorMessage =
(
case when len(Country) > 3 then 'Invalid Country'
when len(HR_DOMAIN_CODE) != 3 then 'Invalid HR_DOMAIN_CODE'
else NULL
end)
如果可以使用case语句?
答案 0 :(得分:2)
您可以添加另一个WHEN
来处理这两个条件:
UPDATE A
SET ErrorMessage =
CASE
WHEN LEN(Country) > 3 AND LEN(HR_DOMAIN_CODE) != 3 THEN 'Invalid Country & Invalid HR_DOMAIN_CODE'
WHEN LEN(Country) > 3 THEN 'Invalid Country'
WHEN LEN(HR_DOMAIN_CODE) != 3 THEN 'Invalid HR_DOMAIN_CODE'
ELSE NULL
END
但是,一旦有多个组合需要检查,上面的内容会非常复杂。我的建议是对每个条件使用单独的CASE
表达式。像这样:
UPDATE A
SET Errormessage = STUFF((
SELECT
CASE WHEN LEN(Country) > 3 THEN '& Invalid Country' ELSE '' END +
CASE WHEN LEN(HR_DOMAIN_CODE) != 3 THEN '& Invalid HR_DOMAIN_CODE' ELSE '' END
), 1, 2, '')