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

Mat*_*att 4 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
Run Code Online (Sandbox Code Playgroud)

And*_*mar 7

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

update [mydb].[dbo].[Account]
set [Billing Street] = ltrim(isnull([(Billing Address 1)], '') +
                       isnull(' ' + [(Billing Address 2)], '') +
                       isnull(' ' + [(Billing Address 3)], ''))
Run Code Online (Sandbox Code Playgroud)