需对一表中的数据进行修改
 如:
旅游运动 78M294A
改为
78M294A 旅游运动
 其中有很多钟情况
1:中间可能不止一个空格
2:“78M294A”后面可能也有空格,一个或多个
3:“旅游运动”前面也可能有空格,一个或多个
4:“旅游运动 78M294A”中间可能有字符或则汉字
  如:
“旅游运动 222 78M294A” 或则 “旅游运动 JJJ 78M294A”
在或则“旅游运动 运动 78M294A”
如何才能做到一次修改?得到结果

解决方案 »

  1.   

    update 表 set 字段=replace(字段,'旅游运动','78M294A')
    update 表 set 字段=replace(字段,'78M294A','旅游运动')
      

  2.   

    楼上的是有问题的,需要找一个该字段不存在的字符中转一下
    update 表 set 字段=replace(replace(replace(字段,'78M294A','疋),'旅游运动','78M294A'),'疋','旅游运动')
    不过要确保字段中不存在字符"疋"
      

  3.   

    旅游运动 222 78M294A
    同样要得到78M294A 旅游运动
      这样的结果
      

  4.   

    1:中间可能不止一个空格
    2:“78M294A”后面可能也有空格,一个或多个
    3:“旅游运动”前面也可能有空格,一个或多个
    4:“旅游运动 78M294A”中间可能有字符或则汉字
      如:
    “旅游运动 222 78M294A” 或则 “旅游运动 JJJ 78M294A”
    在或则“旅游运动 运动 78M294A”第一种数据清理
    WHILE EXISTS (SELECT 1 FROM table1 WHERE PATINDEX(col1,'%  %')>0)
    UPDATE table1
    SET col1=REPLACE(col1,Space(2),Space(1))
    WHERE PATINDEX(col1,'%  %')>0第二三种数据清理
    UPDATE table1
    SET col1=RTrim(LTrim(col))第四种数据不知道有什么规律.
      

  5.   

    hero_xxyun(云) ( ) 信誉:100    Blog  2007-01-11 14:50:25  得分: 0  
      
       旅游运动 222 78M294A
    同样要得到78M294A 旅游运动
      这样的结果
      
     ==========================那是不是可以这样理解:
    数据分三块的时候去掉中间那块,然后把第一块跟第三块对调?
      

  6.   

    update 表 set 字段=replace(replace(replace(字段,'78M294A','疋),'旅游运动','78M294A'),'疋','旅游运动')你先换过来,再stuff(字段,charindex('78M294A',字段),charindex('旅游运动',字段),' ')把中间的数据替换掉
      

  7.   

    应该这样
    stuff(字段,charindex('78M294A',字段),charindex('旅游运动',字段)+1-charindex('78M294A',字段),' ')
      

  8.   

    里面不只这有这个
    旅游运动 78M294A
    信息,我只是说的一种,里面有很多不同的信息
    我以前写过一个语句
    但不能把问题全部都解决掉
    declare @r varchar(30)
    set @r='wwww      kkkk'
    select @r,ltrim(substring(@r,len(@r)-charindex(' ',@r)-1,len(@r)))+' '+left(@r,charindex(' ',@r)-1)
      

  9.   

    先执行
    update 表 set 字段=replace(replace(replace(字段,'78M294A','疋),'旅游运动','78M294A'),'疋','旅游运动')
    再执行
    select stuff(字段,charindex('78M294A',字段)+len('78M294A'),charindex('旅游运动',字段)-len('78M294A')-charindex('78M294A',字段),' ')可以试一下
      

  10.   

    declare @t table(pk int identity(1,1),string varchar(1000))
    insert @t select '旅游运动    78M294A'
    union all select '旅游运动 44 78M294A'
    union all select '旅游运动 我们 78M294A'
    union all select '旅游运动 675 78M294A'
    union all select '78M294A 旅游运动'
    union all select '78M294A 88 旅游运动'update @t set string=replace(replace(replace(string,'78M294A','疋'),'旅游运动','78M294A'),'疋','旅游运动') where charindex('78M294A',string)>charindex('旅游运动',string)
    --select * from @t
    select stuff(string,charindex('78M294A',string)+len('78M294A'),charindex('旅游运动',string)-len('78M294A')-charindex('78M294A',string),' ') from @t--结果
    ---------------------- 
    78M294A 旅游运动
    78M294A 旅游运动
    78M294A 旅游运动
    78M294A 旅游运动
    78M294A 旅游运动
    78M294A 旅游运动(所影响的行数为 6 行)
      

  11.   

    create function rata (@dd as varchar(8000))
    returns varchar(8000)
    as
    begin
    declare @tt varchar(8000),@seek int,@len int
    set @seek = 1
    while charindex(' ',@dd,@seek) <> 0
    begin
    set @len = len(substring(@dd,@seek,charindex(' ',@dd,@seek) - @seek))
    if @seek = 1
    begin
    set @tt = substring(@dd,@seek,@len)
    end
    else
    begin
    set @tt = substring(@dd,@seek,@len) + ' ' + @tt
    end
    --insert into #ta select substring(@dd,@seek,@len)

    set @seek = charindex(' ',@dd,@seek) + 1
    end
    if LEN(@dd) - @seek > 0
    begin
    --insert into #ta select substring(@dd,@seek,LEN(@dd) - @seek + 1)
    set @tt = substring(@dd,@seek,LEN(@dd) - @seek + 1) + isnull(' ' + @tt,'')
    end
    return @tt
    end
    go
    select dbo.rata('11 32 44')drop function rata
      

  12.   

    zh   zh  这个如何对应到具体的表和列中
      

  13.   

    create function rata (@dd as varchar(8000))
    returns varchar(8000)
    as
    begin
    declare @tt varchar(8000),@seek int,@len int
    set @seek = 1
    while charindex(' ',@dd,@seek) <> 0
    begin
    set @len = len(substring(@dd,@seek,charindex(' ',@dd,@seek) - @seek))
    if @seek = 1
    begin
    set @tt = substring(@dd,@seek,@len)
    end
    else
    begin
    set @tt = substring(@dd,@seek,@len) + ' ' + @tt
    end
    --insert into #ta select substring(@dd,@seek,@len)

    set @seek = charindex(' ',@dd,@seek) + 1
    end
    if LEN(@dd) - @seek > 0
    begin
    --insert into #ta select substring(@dd,@seek,LEN(@dd) - @seek + 1)
    set @tt = substring(@dd,@seek,LEN(@dd) - @seek + 1) + isnull(' ' + @tt,'')
    end
    return @tt
    end
    godeclare @t table(string varchar(8000))
    insert @t select '旅游运动    78M294A'
    union all select '旅游运动 44 78M294A'
    union all select '旅游运动 我们 78M294A'
    union all select '旅游运动 675 78M294A'
    union all select '78M294A 旅游运动'
    union all select '78M294A 88 旅游运动 23 adf 123'select dbo.rata(string) from @tdrop function rata
      

  14.   

    78M294A    旅游运动
    78M294A 44 旅游运动
    78M294A 我们 旅游运动
    78M294A 675 旅游运动
    旅游运动 78M294A
    123 adf 23 旅游运动 88 78M294A
      

  15.   

    declare @t table(string varchar(8000))
    insert @t select '旅游运动    78M294A'
    union all select '旅游运动 旅游44 78M294A'
    union all select '旅游运动 我们 78M294A'
    union all select '旅游运动 675 78M294A'
    union all select '78M294A 旅游运动'
    union all select '78M294A 旅游 88 旅游运动 23 adf 123'
    union all select '78M294A 88 旅游1运动 23 adf 123'select * from @tupdate @t set string=case when (string like '%旅游运动%78M294A%' or string like '%78M294A%旅游运动%') then '78M294A 旅游运动' else null endselect * from @t
      

  16.   

    要是遇见
    旅游运动    78M294A
    中间没有空格也没有其它什么字符的情况又怎么处理 
    如:
    旅游运动78M294A
    要改为
    78M294A 旅游运动
    又如何处理?
      

  17.   


       
       一点思路:
       判断第一个字符是什么?   如果是7就取左边7位和右边八们 组合成新的串   否则 就取右边八位 和左边七位 组合成新的串   用if 或 case 语句就行了。
       具体的实现你就自己试一下吧。
      

  18.   

       不好意思 ,更正一下:
          一点思路:
       判断第一个字符是什么?   如果是7就取左边7位和右边八们 组合成新的串   否则 就取左边八位 和右边七位 组合成新的串   用if 或 case 语句就行了。
       具体的实现你就自己试一下吧。
      

  19.   

    如此简单:update 表 set 字段='78M294A 旅游运动' Where 字段 like '%旅游运动%78M294A%'