0

我很难解决这个难题。我有一个展示一些产品的网站。我正在尝试按 ASC 订单展示产品,但它无法正常工作。

这是我当前的查询和输出:

$sql=executeQuery("select * from ".PREFIX."prod_info where prodId='".$pId."' order by ProductName+0) ASC");


AM 65
AM 67
AM 69
AM 104 (Chuck) 
AM 105 (Sin) 
AM 73
AM 76
AC 20 

任何帮助,将不胜感激

4

1 回答 1

0

你应该有:

order by ProductName

代替:

order by ProductName+0

后者转换ProductName为整数。如果它以字母开头,那么它将被视为0. 可能发生的事情是所有都以字母开头,都按值排序0——并且没有发生任何有趣的事情。

编辑:

您似乎希望ProductName按字母顺序按前两位数字排序,然后按数字排序。你可以这样做:

order by left(ProductName, 2),
         char_length(ProductName),
         ProductName

如果最后真的有多余的词,在数字之后,那就更难了。以下可能会更好:

order by left(ProductName, 2),
         substr(ProductName, 3) + 0,
         ProductName
于 2013-09-03T11:39:16.730 回答