2010-11-04 33 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) 
相關問題