我在数据库表中有字段,其名称为" 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。
答案 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)