MySQL - 使ORDER BY按数字排序嵌入到字符串字段中

时间:2014-10-13 20:16:52

标签: mysql sql parsing

我的数据(使用ORDER BY订购时)如下所示:

PART-320
PARTe-160 reducer
PARTe-240
PART-90
PART-30
PARTe-160
PART-960
PART-other
PARTe-250
PART-???
PARTe-1400
PARTe-1000
PARTe-30
...
PART-40
PARTe-120
PARTe-10
PART-120
PARTe-350

我想使用类似的规则对其进行排序:

  • 数字部分按第一个排序
  • 剩下的那种并不重要

我正在考虑在-(连字符)之后解析部分,但不确定如何处理" reducer"以及如何处理问号???在其中一行或other

1 个答案:

答案 0 :(得分:1)

您可以使用substring_index()执行此操作,假设数字部分位于-之后:

order by substring_index(col, '-', -1) + 0

+ 0执行最后一个字段的“静默转换”。