我有以下MySQL:
SELECT scott, title FROM stampitemdetails WHERE scott REGEXP '^RW[0-9]+$' ORDER BY CAST(scott AS UNSIGNED), scott;
问题是,此查询将按如下顺序返回我的结果:
RW1
RW10
RW11
RW2
当他们应该是这样的时候:
RW1
RW2
RW10
RW11
当值以字符开头以数字结尾时,如何进行自然排序?
如果
RW
的长度可以波动…这意味着它可以是S
,或REN
,或数字前面的一些长度未知的字符?记住这一点。顺便说一下,我在查询中有regex,因为在我的php代码中
RW
可以替换为其他字符。 最佳答案
你应该提取数字部分
SELECT scott, title
FROM stampitemdetails
WHERE scott REGEXP '^RW[0-9]+$'
ORDER BY substr(scott, 1,2), CAST(substr(scott, 3, 100) AS UNSIGNED);