2010-11-04 36 views
1

您好我有一个mysql数据库填充产品,每个产品有一个产品代码 产品代码包含字母和数字 例如。 TL541,TL75等mysql按列包含字母和数字的数据

我的客户希望通过代码订购的产品,但TL541自带TL75 之前,大概是因为5比7个

任何想法下如何按数字顺序排序呢?

+1

[自然排序在MySQL(的问题http://stackoverflow.com/questions/153633/natural-sort-in- mysql)不时出现:简而言之:除非是一个非常有限的子集,你可以将该值转换为一个整数(在这种情况下:反转字符串,转换为整数,反转字符串,转换为整数) 。 – Wrikken 2010-11-04 22:49:56

+1

在旁注:正如你在你的问题中指出的PHP:那里的功能是['natsort'](http://www.php.net/natsort) – Wrikken 2010-11-04 22:58:17

+0

认为做事情的最佳方式是获取数据,在php中执行natsort并重新保存到数据库,将新订单保存到订单栏(我最初设置订单的方式,感谢信息,已经在谷歌上很久没有获得任何地方 – 2010-11-04 23:16:15

回答

0

这是一个数据库没有正常化的问题。如果您想将前缀和数字作为单独的数据元素处理,则需要将它们放在自己的列中。

+0

是的,告诉我,我最初创建了一个订单栏的产品表,我使用我创建的大多数表格,但客户希望现在通过产品代码进行订购,在数据库中有大约3000条记录,所以可以重新排列该命令,但我认为这将是一项艰巨的任务 – 2010-11-04 23:11:20

0

对于非常有限的例子,性能差一杂牌:

ORDER BY 
    REPLACE(code,REVERSE(CAST(REVERSE(code) AS UNSIGNED)),''), 
    CAST(REVERSE(CAST(REVERSE(code) AS UNSIGNED)) AS UNSIGNED) 
相关问题