Php 按字符串排序顺序显示mysql记录
我有一个mysql表,记录是 产品名称 2 PRI+8端口FXS PSTN模拟器AdvPhp 按字符串排序顺序显示mysql记录,php,mysql,Php,Mysql,我有一个mysql表,记录是 产品名称 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模拟器Adv2 PRI+8端口FXS PSTN模拟器2
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
2 PRI+32端口FXS PSTN模拟器
2 PRI+32端口FXS PSTN模拟器Adv
我已经测试了演员,转换,订单(产品名称+0)等,但我的愿望结果不会来。有人能帮忙吗。我不确定标题末尾的“Adv”,但我认为这应该行得通
从表中选择*按产品订购\u title ASC
您是否尝试按子字符串订购
... ORDER BY SUBSTRING(product_title, 0, 4), SUBSTRING(product_title, 8, 14)
(您可能必须调整索引,并可能为整个产品标题添加另一个约束条件,现在无法测试)在处理字符串时,您所做的任何排序都不会像您预期的那样起作用,因此
34
将排在4
之前,但是可以这样做:
SELECT * FROM products
ORDER BY
convert(SUBSTRING(product_title, 9, 2), UNSIGNED INTEGER)
这会将4
、8
、32
转换为一个整数,然后按其排序,但是这很混乱,并且依赖于数据的这种格式
如果您的数据发生变化,我将转而考虑通过PHP执行此操作
注意:您也可以根据数据中的第一个数字来调整顺序。您能运行这个吗?您能先发布您当前的SQL查询吗?它是32原始的,32 adv,4原始的,4 adv,8原始的,8 advAh愚蠢的我,因为3小于4,32首先出现。它对数字不太适用。我不是SQL专家,但是如果你没有很多结果,你可以尝试用PHP来排序;