你能优化这段代码吗? T-SQL

时间:2010-05-17 09:35:46

标签: sql-server

基本上我有三个字段,我正在创建一个新的字段,这三个字段组合成一个可邮寄的地址;问题是某些字段包含空值并将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

2 个答案:

答案 0 :(得分:7)

您可以使用isnullltrim删除任何前导空格:

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的回答中继续......