排序包含数字的文字?

时间:2014-11-29 12:55:54

标签: sql vb.net

我在数据库表中有字段,其名称为" number",表包含这样的数据

id number
1   1-1
2   2-4
3   10-1
4   7-1

当我将其排序为"按数字排序"在查询中,它给出了这样的结果,

id number
3   10-1
1   1-1
2   2-4
4   7-1

我想这样,

id number
1   1-1
2   2-4
4   7-1
3   10-1

我正在使用vb.net而我的代码是

Dim da As New OleDb.OleDbDataAdapter("SELECT number FROM TABLE_NAME order by number", cnn)
                Dim dt As New DataTable
                da.Fill(dt)
                Me.dgvData.DataSource = dt

其中dgvData是datagridview。

2 个答案:

答案 0 :(得分:1)

您可以将字符串的左侧部分转换为数字:

order by cast(left(number, charindex('-', number) - 1) as int)

或者,在许多情况下,包括很可能是你的,有效的方法是考虑长度:

order by len(number), number

答案 1 :(得分:0)

简单解决方案:如果连字符后的数字总是正好为1个字符,则可以执行此类操作。

ORDER BY RIGHT('0000'+number, 6)