我有一个mysql表,记录是
product_title
2 PRI+8端口FXS PSTN模拟器Adv
2 PRI+8端口FXS PSTN模拟器
2 PRI+4端口FXS PSTN模拟器Adv
2 PRI+4端口FXS PSTN模拟器
2 PRI+32端口FXS PSTN模拟器Adv
2 PRI+32端口FXS PSTN模拟器
现在我想使用mysql查询来获得这些记录的结果,顺序如下
2 PRI+4端口FXS PSTN模拟器
我已经测试了cast、convert、order by(product_title+0)等,但我想要的结果不会到来。有人能帮忙吗。
我不确定标题末尾的"Adv",但我认为这应该有效;
SELECT * FROM table ORDER BY product_title ASC
您尝试过按子字符串排序吗?
... ORDER BY SUBSTRING(product_title, 0, 4), SUBSTRING(product_title, 8, 14)
(您可能需要调整索引,并可能为整个product_title添加另一个约束,现在无法测试)
在处理字符串时,您所做的任何排序都不会如您所期望的那样工作,因此34
将在4
之前出现,但您可以执行以下操作:
SELECT * FROM products
ORDER BY
convert(SUBSTRING(product_title, 9, 2), UNSIGNED INTEGER)
这会将4
、8
、32
转换为一个整数,然后按其排序HOWEVER这很混乱,并且依赖于此格式的数据。
如果您的数据不同,我会考虑通过PHP来实现。
SQL Fiddle
注意:您也可以根据数据中的第一个数字进行调整。