以字符串排序的顺序显示mysql记录


show mysql record in string sorted order

我有一个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)

这会将4832转换为一个整数,然后按其排序HOWEVER这很混乱,并且依赖于此格式的数据。

如果您的数据不同,我会考虑通过PHP来实现。

SQL Fiddle

注意:您也可以根据数据中的第一个数字进行调整。