表格tb 
A
|a|b|200|
|a|b|100|200|
|a|b|100|
|a|b|100|200|100|
|a|b|100|200|100|200|
希望能的到
|a|b|2|
|a|b|1|2|
|a|b|1|
|a|b|1|2|1|
|a|b|1|2|1|2|

解决方案 »

  1.   

    select replace(A,'00','') A from tb
      

  2.   

    select replace(A,'0','') A from tb
      

  3.   

    select replace(A,'0','') A from tb
      

  4.   

    感谢楼上几位兄弟,但是要求不是这样的以上只是个简单的列子而!
    如果是这样那
    表A
    |a|b|2|1|
    |a|b|1|2|
    |a|b|1|2|
    |a|b|1|2|1|
    |a|b|1|2|1|2|
    的到
    |a|b|2b|1a|
    |a|b|1a|2b|
    |a|b|1a|2b|
    |a|b|1a|2b|1a|
    |a|b|1a|2b|1a|2b|
    那怎么样办啊
      

  5.   

    有啊!!!
    比如第一行
     以字符‘|’后得到 a b 1 2 四个值 如果 其中的 为1 则变为 1a ,如果是 2 则为 2b ,如果是其他 则不变 
    其他的没行都是要这样转换
    因此得到的结果 是为
     |a|b|2b|1a|
    |a|b|1a|2b|
    |a|b|1a|2b|
    |a|b|1a|2b|1a|
    |a|b|1a|2b|1a|2b|
      

  6.   

    a,b是固定的吗?还是说要从|a|b|中取啊?
      

  7.   

    select replace(replace(a,'100','1a'),'200','2b' as a from tb
      

  8.   

    select case replace(A,'0','') when '1' then replace(A,'0','') + 'a' else case replace(A,'0','') when '2' then replace(A,'0','') + 'b' else replace(A,'0','') end end A from tb
      

  9.   

    gahade(与君共勉) ( ) 信誉:100    Blog   加为好友  2007-05-16 12:08:02  得分: 0  
     
     
       a,b是固定的吗?还是说要从|a|b|中取啊?
      
     
    都是要从 |a|b|中取啊 !!
    我的意思是 将没一行 都以‘|’为分割符 分割开来 这样就会得到一个 字符数组 
    比如 :|a|b|2|1| 分割后就得到 a,b,2,1 然后在一个个字符判断 如果 a='a' 就不变如果为 2就变为2b ,如果为1就变为 1a 然后在组合 得到 ‘|a|b|2b|1a|’ 在更新 这个表 的记录为
                  
    |a|b|2|1| 更新为 |a|b|2b|1a|
    |a|b|1|2|,|a|b|1a|2b|
    |a|b|1|2| |a|b|1a|2b|
    |a|b|1|2|1|。。 |a|b|1a|2a|1a|
    |a|b|1|2|1|2|。。|a|b|1a|2b|1a|2b|
    我这里只是举些简单的列子 实际上 数据还是有很多总情况的!!
    说白了 就是类识与 C#里面的 split 函数的功能
    分割出来以后在根据一定的条件进行赋值不知道我这样明白了没有
      

  10.   

    给你个自定义 函数,自己看着弄
    --循环截取法
    CREATE FUNCTION f_splitSTR(
    @s   varchar(8000),   --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
    DECLARE @splitlen int
    SET @splitlen=LEN(@split+'a')-2
    WHILE CHARINDEX(@split,@s)>0
    BEGIN
    INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
    SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
    END
    INSERT @re VALUES(@s)
    RETURN
    END
      

  11.   

    调用select col from dbo.f_splitSTR ('1|2|3|','|') where col is not null and col <> ''