让我们说,我有一张桌子,我想按字段和字号排序。当我使用ORDER BY size
时,会出现类似这样的内容:
size 100
size 105
size 110
size 115
size 85
size 90
size 95
每行中的字符串可以不同,这只是一个例子,当有相同的字符串 - size
时。我想回复一下:
size 85
size 90
size 95
size 100
size 105
size 110
size 115
我知道,用数字字符串排序可以用ORDER BY CAST(size AS UNSIGNED)
来完成,但是当它不是数字字符串时,如何做到这一点,但字段是带数字的字符串?
感谢您的帮助。
答案 0 :(得分:3)
我这样做的简单方法是使用长度作为键:
order by length(size), size
或者,使用substring_index()
:
order by substring_index(size, ' ', 1),
substring_index(size, ' ', -1) + 0
+ 0
进行静默转换,将第二个值转换为数字。
答案 1 :(得分:1)
你是部分正确的。您只需从字母数字列中获取数字
即可SELECT *
FROM MyTable
ORDER BY CAST(SUBSTRING(size, LOCATE(' ',size)+1) AS SIGNED)