有没有一种优雅的方法在MySQL数据库中进行高性能的自然排序?
例如,如果我有这个数据集:
任何其他优雅的解决方案,而不是将游戏的名称分解为他们的组件
确保它们以正确的顺序出现?(4后4,而不是2).
这样做是一个痛苦的**,因为时不时有另一个游戏打破了解析游戏标题的机制(例如"Warhammer 40,000","James Bond 007")
我想按照下面列出的顺序(数字1-12)对以下数据项进行排序:
1 2 3 4 5 6 7 8 9 10 11 12
但是,我的查询 - 首先使用order by xxxxx asc第一个数字排序:
1 10 11 12 2 3 4 5 6 7 8 9
有什么技巧让它更合适吗?
此外,为了充分披露,这可能是字母和数字的混合(虽然现在不是),例如:
A1 534G G46A 100B 100A 100JE
等等....
谢谢!
更新:人们要求查询
select * from table order by name asc
Run Code Online (Sandbox Code Playgroud) got something here I can't explain, hoping to get some help seeing what I'm obviously missing :)
While working on a solution for this question: Oracle SQL to Sort Version Numbers
I figured a clever regexp_replace + LPAD would results in a nicer sorted value. However, for some reason the LPAD kept misbehaving. Here's the "issue" in a simplified test:
with w_data as (
select '9' v from dual union all
select '18' v from dual
)
select v,
lpad(v, …Run Code Online (Sandbox Code Playgroud)