2012-08-16 36 views
1

我有一個字段「order_number」的數據庫設置爲INT在奇數場合的訂單號將需要有一個尾隨r例如2100r明顯INT只會接受數字,並將數字排序正確的ASC或DESC如果我使用VARCHAR來克服這個限制,它將正確接受尾隨r字符,但不會按數字順序正確排序數字,有沒有辦法可以強制INT選項接受一個字符?Mysql INT與一個字符

回答

0

你可以在MySQL中使用CAST函數,但在將新數據插入表之前,使用類型轉換將order_number存儲爲int是個好習慣。

SELECT CAST(int_col AS CHAR); 

SELECT CAST(char_col AS unsigned INTEGER); 
0

不,沒有這樣的選擇。

您應該可能使用VARCHAR列的訂單號和一個單獨的列(可能INT)只用於排序;根據插入和更新行時的順序號填充幫助程序列。

1

您需要將您的賬戶ID存儲爲字符串,如果其中任何一個包含字母。但只要字母總是後綴,您就可以正確命令它們。無論您的AccountID值是否具有前導空格,這都有效。

SELECT * 
    FROM Account 
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID 

這將按數字排序,然後通過詞法排序處理任何相等的數字。

http://sqlfiddle.com/#!2/a16bf/8/0

如果你想用「r」命令,在他們樸素的朋友有相同數量的顯示,你可以這樣做:

SELECT * 
    FROM Account 
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID DESC 
0

嘗試使用這種方式字符串轉換爲數字(number_string * 1),例如 -

SELECT * FROM table ORDER BY column * 1; 
0

不,不可能。正如@Jon所說,沒有其他選項可以強制INT字段保留VARCHAR數據。