0

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

如果它已经包含数据,我希望它在单词后面附加一个逗号和空格。例如

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

我试图让它工作,这样如果前缀列最初是空的,它只包含单词'abc'

而不是 ', abc'

我怎样才能做到这一点?

4

2 回答 2

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

于 2013-01-30T17:47:26.673 回答
0

您还需要null在过滤之前检查 Prefixes 的值,就像NOT LIKEWHERE子句中一样。Sql-Demo

update myTable 
set  Prefixes = isnull(nullif(rtrim(Prefixes),'') + ', abc','abc')
where MyCol='xyz' and isnull(Prefixes,'') not like ', abc%'
于 2013-01-30T18:18:45.780 回答