如何在C#中对nvarchar列进行排序

时间:2019-01-30 11:54:39

标签: c# sql-server winforms sql-server-ce

我在用nvarchar数据类型对列进行排序时遇到问题。我如何按升序排序。 数据采用这种格式...

1/0
22/21
19/26
2.3/14
29/0
1.3/44
85/30

第一个值是公里,它可以是整数或双精度数,然后是一个正斜杠,最后一个值是极数,它始终是整数。

此数据是通过串联两列即

生成的
select fromkm+"/"+frompole as FROM_KM from station;

fromkm和frompole是数据库中的nvarchar类型

结果应为以下形式

1/0
1.3/44
2.3/14
19/26
22/21
29/0
85/30

谢谢

2 个答案:

答案 0 :(得分:3)

使用order by在SQL中进行排序。请注意,由于您的数据存储为nvarchar,因此在排序时必须将其转换为float / int(或者更好的是-更改数据库中列的数据类型) :

select fromkm +"/"+ frompole as FROM_KM 
from station
order by cast(fromkm as float), cast(frompole as int);

答案 1 :(得分:0)

尝试下一个查询,在Substring函数内添加带有字段名称的order by子句。

SELECT from km+"/"+ from pole as FROM_KM from station;
OEDER BY SUBSTRING(FROM_KM,1,2) ASC