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

时间:2013-11-20 14:28:33

标签: php mysql

我有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模拟器
2 PRI + 4端口FXS PSTN模拟器Adv
2 PRI + 8端口FXS PSTN模拟器
2 PRI + 8端口FXS PSTN模拟器Adv < br /> 2 PRI + 32端口FXS PSTN模拟器
2 PRI + 32端口FXS PSTN模拟器高级

我已经测试了演员表,转换,顺序(product_title + 0)等。但我的愿望结果不会来。任何人都可以帮忙。

3 个答案:

答案 0 :(得分:0)

我不确定标题末尾的'Adv',但我认为这应该有效;

SELECT * FROM table ORDER BY product_title ASC

答案 1 :(得分:0)

您是否尝试按子字符串排序?

... ORDER BY SUBSTRING(product_title, 0, 4), SUBSTRING(product_title, 8, 14)

(您可能需要调整索引并为整个product_title添加另一个约束,现在无法测试)

答案 2 :(得分:0)

您执行的任何排序都不会像您预期的那样处理字符串,因此34将在4之前出现,但可以执行此操作:

SELECT * FROM products 
ORDER BY 
convert(SUBSTRING(product_title, 9, 2), UNSIGNED INTEGER)

这会将4832转换为整数,然后按顺序排序 HOWEVER 这很麻烦并依赖于您的数据格式。

如果你的数据有所不同,我会考虑通过PHP来做这件事。

SQL Fiddle

注意:您也可以通过数据中的第一个数字调整此顺序。