Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按字符串排序顺序显示mysql记录_Php_Mysql - Fatal编程技术网

Php 按字符串排序顺序显示mysql记录

Php 按字符串排序顺序显示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

我有一个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模拟器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来排序;