除非为空,否则更新并追加

时间:2013-01-30 17:44:42

标签: sql sql-server-2008

我试图通过向其添加数据来更新字段。 如果它已经包含数据我不会更新它,否则我会。

如果它已经包含数据,我希望它附加逗号和空格后跟单词。 e.g。

update myTable 
set  Prefixes = convert(nvarchar(max),Prefixes) + ', abc' 
where MyCol='xyz' and Prefixes not like '%abc%'

我试图让这个工作,所以如果前缀列最初为空,它只包含单词'abc'

而不是',abc'

我该怎么做?

2 个答案:

答案 0 :(得分:1)

听起来你需要CASE

update myTable 
set  Prefixes = 
           case 
               when Prefixes is null or Prefixes = ''
               then 'abc'
               else convert(nvarchar(max),Prefixes) + ', abc' 
            end
where MyCol='xyz' and (Prefixes not like '%abc%' or Prefixes is null)

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

您还需要在null子句中过滤为NOT LIKE之前检查前缀的WHERE值。 Sql-Demo

update myTable 
set  Prefixes = isnull(nullif(rtrim(Prefixes),'') + ', abc','abc')
where MyCol='xyz' and isnull(Prefixes,'') not like ', abc%'