2014-07-23 78 views
0

我有一个类似下面的表。我试图根据代码列对数据进行排序。如果代码的长度小于或等于5,那么代码应该按原样排序,如果代码长度大于5,则在排序时从代码中移除2个数字。使用iff语句访问SQL查询

sno Code 
    1 17750 
    2 17775 
    3 63204A06 
    4 63204A07 
    5 F16D078 
    6 8186 
    7 8100 
    8 63513A52 

我的SQL查询

SELECT sno, iif(Len([Code])<=5,[Code],Mid([Code],3)) AS Codeno FROM table1 

而更多的条件与代码列,以满足中,如果代码是字母开头,那么它应该只能删除书(起始位置)。排序结果应该看起来像

sno Code 

    1 17750 
    2 17775 
    3 204A06 
    4 204A07 
    5 16D078 
    6 8186 
    7 8100 
    8 513A52 

如何在上述查询中指定相同的iff条件。

回答

1

假设你离开的信,如果[代码]为5个字符或更少:

SELECT sno, 
iif(Len([Code])<=5,[Code],iif(ASCII([Code])>57,Right([Code],Len([Code])-1),Mid([Code],3))) 
AS Codeno FROM table1 
+0

感谢。使用ASCII进行小修正,完美工作。在Access中,它将作为ASC。 – sam