2011-08-08 242 views
0

可能重复:
Sorting Alphanumeric field in SQL CE (Compact Edition) version 3.5字母数字排序为SQL Server CE

如何使字母排序为SQL Server CE?

存储的值例如:

1,2,20,3,a1,a2,a20,a3 

输出值:

1,2,3,20,a1,a2,a3,a20 

CE不支持IsNumeric功能,所以它不能被使用。 CE版本必须是3.5,因为Visual Basic 2010不支持CE 4.0。

解决这样不起作用:

SELECT * FROM tbl WHERE col LIKE '%[^0-9]%' 

这可能是因为这些括号的,CE似乎忽略它们。

在SQL Server 2008中我用下面的字母排序:

SELECT Id FROM Test 
ORDER BY CASE 
WHEN IsNumeric(ID) = 1 THEN Right(Replicate('0',21) + ID, 20) 
WHEN IsNumeric(ID) = 0 THEN Left (ID + Replicate('',21),20) 
ELSE ID 
END 

这怎么可能一样可以在CE做了什么?

回答

2

我得到这个工作的数值。对于包含字符的值,您可能需要将字符拆分以按字母顺序排列以下数字。亚历克斯K.引用的情况将为此工作。

DECLARE @padding varchar(10) 
SELECT @padding = '000000000' 

select * 
from YourTable 
order by SUBSTRING(@padding, 0, 10 - LEN(yourValue)) + yourValue