根据SQL中字符串中的数字值排序

3

我有这些CB1-15的值,但我想按照... CB1-15的顺序进行排序,但目前它是按CB1、CB10、CB11等顺序排列的。

这是我的表格样式...

CB    Description   File Path

CB1   New Product   new.png
CB10            
CB11            
CB12            
CB13            
CB14            
CB15            
CB2   Best Seller   best.png
CB3         
CB4         
CB5         
CB6         
CB7         
CB8         
CB9         

感谢您的帮助。 :)

1
只是为了澄清。示例数据是单列还是多列? - John Cappelletti
@JohnCappelletti,问题已经得到解答 - 但是如果以后有人搜索它,我已经更新了帖子以显示其列。 - Adam91Holt
3个回答

6
请使用以下脚本。
  SELECT * 
  FROM  YourTable
  ORDER BY CAST(Replace(YourColumn,'CB','')as INT)

谢谢 :) 非常感谢! - Adam91Holt

2

不太清楚这些数据是在多列还是单个字符串中。以下是一种适用于两种情况的方法:

select *
from yourtable
order by cast((substring(yourfield, 3, 2)) as int)

关键是使用castint转换后进行order by,而不是使用字符串。


非常感谢您,先生 :) - Adam91Holt
这对于CB100不起作用,所以您必须使用值的长度来替换2而不是CB,因此我会说@Unnik的解决方案更好。 - Shushil Bohara

0

另一种简单的排序方法:

order by len(col), col

如果你想要降序:

order by len(col) desc, col desc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接