1

我们的产品代码如下:

  • AGE100 (代表 AGE 1.00 盎司)
  • AGE050 (代表 AGE 0.50 盎司)
  • AGE025 (代表 AGE 0.25 盎司)
  • AGE010 (代表 AGE 0.10 盎司)

等等等等。我希望数据库先返回字母,然后返回最后的数字代码,所以 KR100 会低于 AGE050。

我目前的查询,

 SELECT * FROM  'prices' ORDER BY  'code' ASC LIMIT 0 , 30

回报:

  1. 年龄010
  2. 年龄025
  3. 年龄050
  4. 年龄100
  5. KR100

我如何让它正确地对代码中的数字进行排序?

4

3 回答 3

0

按数字部分降序排序:

SELECT * FROM  'prices' ORDER BY SUBSTRING('code', -3) DESC

和前 2 个字符

SELECT * FROM  'prices' ORDER BY SUBSTRING('code', 1,2) ASC

所以这应该给你一个接近的东西:

SELECT * FROM  'prices' ORDER BY SUBSTRING('code', 1,2) ASC, SUBSTRING('code', -3) DESC
于 2013-05-01T20:35:03.620 回答
0

要将项目按特定顺序放置,您可以使用sortby数据库中的列,您可以更改该列以微调应拉出行的顺序。

例子

SELECT * FROM  'prices' ORDER BY  'code' ASC LIMIT 0 , 30

会成为

SELECT * FROM  'prices' ORDER BY  'sortby' ASC LIMIT 0 , 30

该字段将是一个 INT,并且可以更容易地获得所需的订单。

于 2013-05-01T20:35:11.590 回答
-1

由于natsort()不适用于多维数组,您可以尝试:

uksort($array, 'strnatcasecmp');

于 2013-05-01T20:32:25.133 回答