我用的是SQL SERVER 2000做的数据库
如何简化字段的内容如内容如下:
asdfcdd
asdfrtyt
bdfsdf
bdfsgrhg
........如何转化成
asdf1
asdf2
bdfs1
bdfs2

解决方案 »

  1.   

    如何简化字段的内容
    ~~~~~~~~~~~~~~~~~
    是简化字段名称? select asdfcdd as asdf1, asdfrtyt as asdf2还是简化数据内容?
    如果是简化数据内容的话,建议写个存储过程,然后用游标循环一下整个数据表,根据需要缩写后,再插入另一个表中
      

  2.   

    是简化数据内容的话,postren(小虫)
    可以给个例子吗?
      

  3.   

    --没有测试,你测试一下
    create procedure Procedure_1
    as
    begin
        declare @col1 varchar(50)
        declare @col2 varchar(50)
        declare @i int
        declare @len int
        set @len = 4 --截取的长度
        
        declare @mycursor cursor
        
        set @mycursor =cursor local scroll for
        select col1
        from table1 --源表
        order by col1
        open @mycursor
        fetch @mycursor into @col1
        set @i = 0
        while (@@fetch_status = 0)
        begin
            set @i = @i + 1
            if len(@col1) > @len --如果长度大于截取的长度则截取
            begin
                set @col2 = left(@col1, @len) + convert(varchar(5), @i)
            end else --否则直接在后面添加序号
            begin
                set @col2 = @col1 + convert(varchar(5), @i)
            end
            insert into table2(col1) --插入目的表
            values(@col2)
            fetch @mycursor into @col1
        end
        close @mycursor
        deallocate @mycursor
        return 1
    end
      

  4.   

    postren(小虫)
    你这个过程只是截取大于4的内容
    和不是我所要的
    我上面的例子只不过是刚好简化后变成五位而已
    实际上是不一定的
    例如
    aideipyyw
    aids
    airjt
    bdfgrwqiti
    bdfgt
    bdfgq05g要实现转化后的结果如下:
    ai1
    ai2
    ai3
    bdfg1
    bdfg2
    bdfg3
      

  5.   

    var
      s :string;
      s:='abcdef';
      s:=copy(s,4);
    showmessage(s);
    是不是想要这个?
      

  6.   

    用order by排序,然后判断两个相邻的纪录之间的内容,合乎你的要求的就可以采用小虫的方法一个一个命名。
      

  7.   

    nann32258(大小迷糊)  
    你讲的方法试过了
    但是不的。
      

  8.   

    你是要最大程度比较几个值的相似?比如
    ASDF
    ASDG
    ASE
    是改写成
    ASD1
    ASD2
    ASE3
    ???
    关键是比较的深度.
      

  9.   

    之所以采用ORDER来排序,就是考虑了比较深度的问题.现在关键是LZ的深度是不定的,取决靠前位置的列的值.所以,刚开始的时候要从游标取出第一个值,这是个保留值,定义为@COLCONTAIN,然后游标下移,挨个字符判断保留值与第二个值的关系,如果不存在相同值,则将第二个值设为保留值;如果存在,那么取出相同值,设置相同部分为@SAMETEXT,保留值置空.以后判断在@SAMETEXT跟游标记录之间,如果跟@SAMETEXT不同,则@SAMETEXT置空,保留值置为不同记录.如此反复.
      

  10.   

    所有方法都试过了上面讲的
    但是都不适合
    我里面的字段内容是有药名的每个字的第一个拼音码
    所以可以讲是没什么规律的
    只是有些前面几个相同
    例如:
    葡萄糖液100ML
    葡萄糖液500ML
    ............
    对应的字段内容是
    PTTY100ML
    PTTY500ML
    ............现在就是想检索的时候比较快
    如果其余结果都没
    PTTY开头的话就转化成
    P1
    P2
    转化的时候最短要保留2位