我的字段包含这样的内容:1, 2, 100
前两个数字可以是任意大小,第三个数字最多可以是100个。
现在我需要按照第三个数字对字段进行排序,但由于我有另外两个数字,我不知道该怎么做。
也许我可以使用像REGEXP
之类的东西?
到目前为止,我已经尝试SUBSTRING
,但因为我的两个数字可以是任何类似
order by SUBSTRING(my_field, 4)
会有效,但如果我有像32, 451, 30
这样的数字,则需要错误的数字
我也使用php来构建我的查询,但我认为这不重要。
答案 0 :(得分:9)
答案 1 :(得分:4)
ORDER BY SUBSTRING_INDEX(my_field,',',-1)+0 ASC -- or DESC
使用SUBSTRING_INDEX
,它将子字符串抓取到分隔符的第n个出现位置(在您的情况下为逗号),或者在负n的情况下,它将返回之后的子字符串 / em>从最后出现的第n个。
要明白我的意思,请尝试:
SELECT SUBSTRING_INDEX(my_field,',',-1)
FROM my_table
+0
中存在ORDER BY
的原因是mysql将这些作为数字排序,而不是字符串。
答案 2 :(得分:2)
这应该有效:
order by CONVERT(SUBSTRING(my_field, LOCATE(",", my_field, RIGHT)), INTEGER)
答案 3 :(得分:1)
SELECT *
FROM (
SELECT
SUBSTRING(my_field, 4) AS my_field,
...
FROM
...
WHERE
...
) temp_table
ORDER BY my_field