SQL Server 的自然排序?
我有一列通常只有数字(有时是字母,但这并不重要)。
我怎样才能让它自然排序?
目前排序如下:{1,10,11,12,2,3,4,5,6,7,8,9}
我希望它排序如下:{1,2,3,4,5,6 ,7,8,9,10,11,12}
I have a column that is typically only numbers (sometimes it's letters, but that's not important).
How can I make it natural sort?
Currently sorts like this: {1,10,11,12,2,3,4,5,6,7,8,9}
I want it to sort like this: {1,2,3,4,5,6,7,8,9,10,11,12}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
IsNumeric 已“损坏”,ISNUMERIC(CHAR(13)) 返回 1 并且 CAST 将失败。
使用 ISNUMERIC(textval + 'e0')。最终代码:
您可以混合订单参数...
IsNumeric is "broken", ISNUMERIC(CHAR(13)) returns 1 and CAST will fail.
Use ISNUMERIC(textval + 'e0'). Final code:
You can mix order parameters...
投射它。另外,不要忘记使用 IsNumeric 来确保只返回数字(如果它们包含字母,则很重要;)。
另外,转换为将保存最大值的数据类型。
如果您也需要结果集中的非数字,则只需在之前或之后附加一个 UNION 查询,其中 IsNumeric = 0(按您想要的任何顺序排序)。
Cast it. Also, don't forget to use IsNumeric to make sure you only get the numbers back (if they include letters it IS important ;).
Also, cast to the datatype that will hold the largest value.
If you need the non-numbers in the result set too then just append a UNION query where IsNumeric = 0 (order by whatever you want) either before or after.
使用
“OrderBy ColumnName Asc”进行绑定。
您是否在查询末尾
Have you tied using:
'OrderBy ColumnName Asc'
at the end of your query.