【发布时间】:2012-04-10 00:18:56
【问题描述】:
默认情况下,SQL 将数字排在字符之前。
所以如果我有“名称”列:
abc
ab1
a1b
1ba
1bac
b21
由于 SQL 按 0-Z 排序(先从 0 到 9,然后是 a-Z),因此查询
SELECT * FROM ... ORDER BY name
将导致:
1ba
1bac
a1b
ab1
abc
abc1
b21
但我希望它按 a-0 排序(首先是 a-Z,然后是 0-9)。
abc
abc1
ab1
a1b
b21
1ba
1bac
如何在查询中执行此操作?更具体地说,如何在 SQLite 中执行此操作?
我在 Sort MySQL results alphabetically, but with numbers last 中找到了一个解决方案,但仅限于第一个字符。
【问题讨论】:
-
你的值总是3个字符吗?
-
您可以use the C interface to create a function 使用
regexp运算符将字母和数字拉出到单独的列中。 -
@gbn 不,他们可以很长.. 可能应该表明:)
标签: sql sqlite sql-order-by