创建表的语句:
CREATE TABLE [dbo].[Q_SERVICE](
[SERVICENAME] [varchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL,
[SERVICEGLOBALID] [varchar](60) COLLATE Chinese_PRC_CI_AS NOT NULL,
[SERVICETYPE] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[SERVICEGRP] [varchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL,
[CREATEDATE] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]插入的数据:    SERVICENAME       SERVICEGLOBALID      SERVICETYPE     SERVICEGRP             CREATEDATE
  OS_LINUX_10.0.0.1  4447647174377329090 OS ABCD#ABCDEF#ABCDEFG 2009-10-30
  OS_LINUX_10.0.0.2  4447647174377329090 DB ABCD#DBC#ABCDEFG          2009-10-30
  OS_LINUX_10.0.0.3         4447647174377329090 DB       AB#DBC#ABCDEFG          2009-10-30要的结果:如果要修改的内容是ABCD要换成DBCA
结果:DBCA#ABCDEF#ABCDEFG" 
用户输入:ABCDEF要换成EFG
ABC#EFG#ABCDEFG 删除:用户输入:ABC 把所有的ABC都删除掉
结果:ABCDEF#ABCDEFG用户输入:ABCDEF就要把所有的ABCDEF删除掉
结果是:ABCD#ABCDEFG请大家帮帮忙。

解决方案 »

  1.   

    declare @str varchar(8000)
    declare @result varchar(8000)select @str = 'ABC'select @result = case @str when 'ABCD' then 'DBCA' when 'ABCDEF' 
    then 'EFG' when 'ABC' then '' when 'ABCDEF' then '' endupdate tb 
    set [SERVICEGRP] = replace('#'+[SERVICEGRP]+'#','#'+@str+'#','#'+@result+'#')select * from tb
      

  2.   

    declare @str varchar(8000)
    declare @result varchar(8000)select @str = 'ABC'select @result = case @str when 'ABCD' then 'DBCA' when 'ABCDEF' 
    then 'EFG' when 'ABC' then '' when 'ABCDEF' then '' endupdate tb 
    set [SERVICEGRP] = substring(replace('#'+[SERVICEGRP]+'#','#'+@str+'#','#'+@result+'#'),2,
    len(replace('#'+[SERVICEGRP]+'#','#'+@str+'#','#'+@result+'#'))-2)select * from tb
      

  3.   

    --描述得有问题吧,条件有重复的
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    create table [tb]([SERVICENAME] varchar(17),[SERVICEGLOBALID] bigint,[SERVICETYPE] varchar(2),[SERVICEGRP] varchar(30),[CREATEDATE] varchar(10))
    insert [tb]
    select 'OS_LINUX_10.0.0.1',4447647174377329090,'OS','ABCD#ABCDEF#ABCDEFG','2009-10-30' union all
    select 'OS_LINUX_10.0.0.2',4447647174377329090,'DB','ABCD#DBC#ABCDEFG','2009-10-30' union all
    select 'OS_LINUX_10.0.0.3',4447647174377329090,'DB','AB#DBC#ABCDEFG','2009-10-30'--select * from [tb]declare @str varchar(8000)
    declare @result varchar(8000)select @str = 'ABCDEF'select @result = case @str when 'ABCD' then 'DBCA' when 'ABCDEF' 
    then 'EFG' when 'ABC' then '' when 'ABCDE' then '' endupdate tb 
    set [SERVICEGRP] = substring(replace('#'+[SERVICEGRP]+'#','#'+@str+'#','#'+@result+'#'),2,
    len(replace('#'+[SERVICEGRP]+'#','#'+@str+'#','#'+@result+'#'))-2)select * from tb-------------------------------------
    OS_LINUX_10.0.0.1 4447647174377329090 OS ABCD#EFG#ABCDEFG 2009-10-30
    OS_LINUX_10.0.0.2 4447647174377329090 DB ABCD#DBC#ABCDEFG 2009-10-30
    OS_LINUX_10.0.0.3 4447647174377329090 DB AB#DBC#ABCDEFG 2009-10-30