相关疑难解决方法(0)

在MySQL中自然排序

有没有一种优雅的方法在MySQL数据库中进行高性能的自然排序?

例如,如果我有这个数据集:

  • 最终幻想
  • 最终幻想4
  • 最终幻想10
  • 最终幻想12
  • 最终幻想12:Promathia的链条
  • 最终幻想冒险
  • 最终幻想起源
  • 最终幻想战术

任何其他优雅的解决方案,而不是将游戏的名称分解为他们的组件

  • 标题:"最终幻想"
  • 数量:"12"
  • 副标题:"Promathia链"

确保它们以正确的顺序出现?(4后4,而不是2).

这样做是一个痛苦的**,因为时不时有另一个游戏打破了解析游戏标题的机制(例如"Warhammer 40,000","James Bond 007")

mysql sql sorting natural-sort

75
推荐指数
10
解决办法
7万
查看次数

MySQL'Order By' - 正确排序字母数字

我想按照下面列出的顺序(数字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)

mysql sql-order-by

55
推荐指数
6
解决办法
10万
查看次数

LPAD and REGEXP_REPLACE interaction gone wonky?

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)

regex oracle

2
推荐指数
1
解决办法
1269
查看次数

标签 统计

mysql ×2

natural-sort ×1

oracle ×1

regex ×1

sorting ×1

sql ×1

sql-order-by ×1