这是我的问题
$sql=executeQuery("select * from ".PREFIX."frame_info
where Id='".$Id."' $where_clause
order by left(FName, 2), substr(FName, 3) + 0, FName");
另外,我试过以下方法,但没有效果
强制转换(fname as unsigned)asc
名称+0
长度(fname),fname
以下是示例数据:
Rayban Slim Fit 5,
Rayban Slim Fit 6,
Rayban Slim Fit 7,
Rayban Slim Fit 3,
Rayban Slim Fit 2,
Rayban Slim Fit 1,
Rayban Slim Fit 9,
Rayban Slim Fit 8,
Rayban Slim Fit 10,
Rayban Princess 149,
Rayban Princess 146,
Rayban Princess 118,
Rayban Princess 147,
Rayban 3141,
Rayban 3143,
Rayban 3153,
Rayban 3152,
Rayban 3130,
Rayban 3128
预期结果:
Rayban 3128,
Rayban 3130,
Rayban 3141,
Rayban 3143,
Rayban 3152,
Rayban 3153,
Rayban Princess 118,
Rayban Princess 146,
Rayban Princess 147,
Rayban Princess 149,
Rayban Slim Fit 1,
Rayban Slim Fit 2,
Rayban Slim Fit 3,
Rayban Slim Fit 5,
Rayban Slim Fit 6,
Rayban Slim Fit 7,
Rayban Slim Fit 8,
Rayban Slim Fit 9,
Rayban Slim Fit 10
1条答案
按热度按时间ghhaqwfi1#
我们可以将分隔符用作单个空格字符的substring\ u index()函数(
' '
).-1
会让我们从最后一刻开始FName
第一次出现空格(从右到左)。现在,我们可以使用
CAST(.. AS UNSIGNED)
将数字子字符串转换为整数。使用
Replace()
函数Trim()
,以获取基名称(不带数字后缀的字符串)。现在,只是
Order By
首先是基本名称,然后是后缀号(“序列号”)尝试以下查询(db fiddle demo):