SQL中的ORDER BY

Adn*_*nan 3 mysql sql

我有一个类型字符串的列,其中包含行中的值,如:

1-1
1-5
1-14
1-7
1-3
Run Code Online (Sandbox Code Playgroud)

现在如果我在该列上使用ORDER BY,我得到的订单为:

1-1
1-14
1-3
1-5
1-7
Run Code Online (Sandbox Code Playgroud)

订购它的正确方法是什么? 1-1, 1-3, 1-5,1-7,1-14

感谢您的时间

Car*_*ter 10

假设你的第一个角色也可能有所不同:

order by convert(substr(my_field, 1, locate(my_field, '-') - 1) as int),
         convert(substr(my_field, locate(my_field, '-') + 1) as int)
Run Code Online (Sandbox Code Playgroud)

  • +1.这是提出的问题的正确答案.也就是说,对架构的更改可能是更好的解决方案. (3认同)

Ahm*_*rid 7

您可以将"1-1"重命名为"1-01"


Jon*_*röm 5

正确的方法是将它们作为整数存储在不同的列中.