基本上我有三个字段,我正在创建一个新的字段,这三个字段组合成一个可邮寄的地址;问题是某些字段包含空值并将myString添加到null只会在sql中生成null。
所以这是我的代码,任何人都可以使它更干净吗?它仍然看起来很漂亮!
UPDATE [mydb].[dbo].[Account]
SET [Billing Street] = CASE
WHEN [(Billing Address 1)] is null and [(Billing Address 2)] is null THEN [(Billing Address 3)]
WHEN [(Billing Address 1)] is null and [(Billing Address 3)] is null THEN [(Billing Address 2)]
WHEN [(Billing Address 2)] is null and [(Billing Address 3)] is null THEN [(Billing Address 1)]
WHEN [(Billing Address 1)] is null THEN [(Billing Address 2)] + ' ' + [(Billing Address 3)]
WHEN [(Billing Address 2)] is null THEN [(Billing Address 1)] + ' ' + [(Billing Address 3)]
WHEN [(Billing Address 3)] is null THEN [(Billing Address 1)] + ' ' + [(Billing Address 2)]
ELSE [(Billing Address 1)] + ' ' + [(Billing Address 2)] + ' ' + [(Billing Address 3)]
END
答案 0 :(得分:7)
您可以使用isnull
和ltrim
删除任何前导空格:
update [mydb].[dbo].[Account]
set [Billing Street] = ltrim(isnull([(Billing Address 1)], '') +
isnull(' ' + [(Billing Address 2)], '') +
isnull(' ' + [(Billing Address 3)], ''))
答案 1 :(得分:2)
如果旧列和新列共存,您最好创建一个计算列 - 这样,它们就不会彼此“不同步”。
接受Andomars声明,并将其更改为:
ALTER TABLE Account ADD
[Billing Street] AS LTRIM...
LTRIM ......在Andomar的回答中继续......