Sql Server CE的字母数字排序

时间:2011-08-08 10:12:10

标签: sql-server windows-ce sql-server-ce

  

可能重复:
  Sorting Alphanumeric field in SQL CE (Compact Edition) version 3.5

如何为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中完成同样的工作?

1 个答案:

答案 0 :(得分:2)

我让这个用于数值。对于带字符的值,您可能需要将字符拆分为按字母顺序对以下数字进行排序。 Alex K.引用的案例将适用于此。

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

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