我有个表内,其中有一字段:
SPBH(商品编号)AV01D0001                  
AV01D0002                  AV02D0003                    
AV02D0004  AV03D0005                    
AV03D0006 AV04D0007                 
AV04L0008 
........
.......
AV99D0009
AV99B0010之前我用语句
query1.sql.Add('select SUBSTRING(spbh , 6 , 4)  as 顺序号 from spml ' );取商品编号第六位后的4个数字,即0001..0002..0003..0004做排序当时没考虑AV**会有升位的可能所以使用正常,但目前
AV后面2位数字,升到100了(如:AV100D0011,AV101B0012 ),程序截取出来的4位数字就不对了,问有什么好的办法能解决呢?多谢!!

解决方案 »

  1.   

    select right(spbh,4)  as 顺序号 from spml
      

  2.   


     
    不好意思,忘了商品编号后面还有东西的导致eddy8863(西北狂)的方法不能用  
    AV01D0001-111+B8                                      
    AV01D0002-DSSSSSS  
    AV02D0003-D55B                                          
    AV02D0004-5D1111   
     
    AV03D0005-F555                                          
    AV03D0006-4F5678   
     
    AV04D0007-P0999+21                                    
    AV04L0008-8-D-S    
    ........  
    .......  
    AV99D0009-I8+6  
    AV99B0010-9+1  
      

  3.   

    这个似乎不麻烦吧SELECT SUBSTRING(SPBH,PATINDEX('%-%',SHBH)-4,4) AS 顺序号 FROM SPML