使用sqlite对数字(和数字+字母)进行排序

4

我正在尝试使用Sqlite对一个VarChar字段进行排序。

该字段可以包含数字或数字+字母,但我需要按数字顺序排序,如下所示:

1
1a
1b
5
5x
5y
10
10d
10e
10g1
11
11a
11b
100c
100f

有什么想法吗? 我已经能够做到这一点...它接近(但不完全)我所需的:

在字段开头填充'00000',然后按前五个字母排序

2个回答

12

简单易懂

select col from tbl order by col*1, col

不错!但它只适用于开头的数字:你仍然会发现"10g9"和"10g10"排序错误。 - dan04
2
@dan 是的,但它适用于上面所有的数据,并且绝对适用于格式“数字+字母”(数字_然后_字母)。 - RichardTheKiwi
1
如果有字母和数字的情况呢?例如 A1、A2、A10 等等。 - Michael
谢谢,帮助解决了我们遇到的排序问题。 - SkySoft

1

使用内置函数没有简单的方法来完成这个任务。使用sqlite3_create_collation(或者在您喜欢的编程语言中等效的包装器)来定义一个字符串比较函数,实现自然排序


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