2012-02-16 26 views
1

我想排序一列具有字母数字字母排序字母数字字符有问题

见下文

SELECT d.number 
FROM table name d, table_name 2 a WHERE d.case_id ='11-41' 
AND d.ExhibitTypeId = TypeId AND d.ComplianceNo = '0' and 
active = 1 and number is not null order by case 
when ISNUMERIC(d.number) = 1 then right('0000000000'+d.number+'0',10) 
else right('0000000000'+d.number,10) 
end 

这是我的查询是输出

1 
2 
3 
11 
12 
2A1 

我想这个输出而不是

1 
2 
2A1 
3 
11 
12 

任何有关这方面的帮助,非常感谢。

回答

0

假设的SQL Server这可以利用一些调整工作

SELECT 
    d.number 
FROM 
    table name d, 
    table_name 2 a 
WHERE 
    d.case_id ='11-41' 
    AND 
    d.ExhibitTypeId = TypeId 
    AND 
    d.ComplianceNo = '0' 
    and 
    active = 1 
    and number is not null 
order by 
    Convert(int, LEFT(number, Case 
          When PATINDEX('%[^0-9]%', number) > 0 Then PATINDEX('%[^0-9]%', number) - 1 
          Else LEN(number) 
         End) 
    ), 
    LEN(Number) 
0

如果(ISNUMERIC(LEFT(情况下,2)

由壳体BEGIN

顺序

END

else

通过LEFT BEGIN

顺序(情况下,1),LEFT(情况下,2)

END