产品编号共10位(NVARCHAR编号内有字母)
查找出产品编号前5位相同的所有记录,
中间的2位是字母(每条记录的字母是不同的)
再找到这些记录中后三位最大的那条记录+1做为新的编号
请给出详细一些的编码.
谢谢!!!!!!!!!!!

解决方案 »

  1.   

    不是很明白你的意思,中间的2位和后面的+1有关系吗?
    不过也无所谓的,用copy和pos就完全可以解决
      

  2.   

    比如产品编码是
    66666AB001
    66666BB002
    66666AB003
    66667BB001
    66667AB002就是说不管中间两位字母是什么,只要前5个数字相同就先取出
    如果我想增加一个产品编码前7位是66666cc那么它的后三位是004 组成一个66666cc004的编码
    如果增加的产品编码前7位是66667AB的话,那么它的后三位是003  组成一个66667ab003的编码
      

  3.   

    select * from tabel where 编码 like "12345%"
    选择数据集while not ClientDataset.eof
    var 
        str : string;
    begin
        str = Copy(ClientDataSet.FieldByName("编码").toString(),8,3);
        if (strtoInt (str)>Max)
        begin
           Max = strtoint(str);
        end;  
        ClientDataSet.Next;
    end;
      

  4.   

    to hxb2678() 
    你写的编码报错
    停在Var上
      

  5.   

    呵呵,少了个do
     
    while not ClientDateset.eof do
    var
    begin
    ...
    end;
      

  6.   

    select left(prod_id,5) prod_id,max(convert(int,right(prod_id,3)))+1 new_prodid 
    from B_prod_list
    where prod_id like '101%' and len(prod_id)>7
    group by left(prod_id,5)给你个sql语句,我在sql实现的是编码8位,查出前3为相同的纪录,第4、5为不同,后三位最大的那条纪录+1,希望能给你帮助。
      

  7.   

    在where字句中添加and len(prod_id)>7是因为我的编码有点乱
      

  8.   

    对 hxb2678()的方法做点改进:假设你要加的编号的“66667AB003”select * from tabelname where 编码 like "66667%"
    选择数据集var 
        str : string;
        Mac : integer;
    ...Adoquery1.First;
    while not Adoquery1.eof do
    begin
        Max := 0;
        str = Copy(Adoquery1.FieldByName("编码").AsString,8,3);
        if (strtoInt(str) > Max)
        begin
           Max = strtoint(str);
        end;  
        Adoquery1.Next;
    end;Max := StrToInt(RightStr('000' + IntToStr(Max), 3));编号 := '66667AB' + IntToStr(Max);呵呵,只是思路,供参考。 
      

  9.   

    Max := StrToInt(RightStr('000' + IntToStr(Max), 3));rightstr???
      

  10.   

    Max := StrToInt(RightStr('000' + IntToStr(Max), 3));语句还是有问题
      

  11.   

    呵呵,我想SQL查询和ASC排不会有问题,
    你可以在排序后指到最后的一条,然后再将后3位提出,转换为数字再加一就可以了
    加的方法我有例子
    方便的话加QQ:270726628。呵呵