我的表中有一個varchar字段,我想對它進行排序。但我需要處理這個字段爲整數。意思是如果排序爲文本,順序是「19,2,20」,但我想要得到正確的順序「2,19,20」。mysql order varchar field as integer
任何人都可以幫助我嗎?
我的表中有一個varchar字段,我想對它進行排序。但我需要處理這個字段爲整數。意思是如果排序爲文本,順序是「19,2,20」,但我想要得到正確的順序「2,19,20」。mysql order varchar field as integer
任何人都可以幫助我嗎?
SELECT *
FROM mytable
ORDER BY
CAST(mycol AS DECIMAL)
我以某種方式沒有設法運行查詢CAST
。我總是得到Error Code: 1064 near "DECIMAL"
(或我選擇的其他數字類型)。於是,我找到了另一種方式來排序varchar
的數字:
SELECT *
FROM mytable
ORDER BY ABS(mycol)
簡單一點,在我的情況下工作。
可使用此代碼根據訂購varchar字段你需要
SELECT * FROM mytable ORDER BY ABS(mycol)
下面是解
SELECT * FROM MyTable ORDER BY ABS(MyCol);
您可以ABS()
用於這一目的。 ABS()是一個數學函數,返回absolute (positive) value of the specified expression
。所以查詢將是這樣的
SELECT * FROM MyTable ORDER BY ABS(MyCol);
所有其他的答案使用ABS
,其值轉換成絕對(正)值,假設整數是積極的。一個更好的解決辦法是使用* 1
:
SELECT * FROM mytable ORDER BY mycol * 1
這防止鑄造負數爲積極因素。啓發:mysql sort string number
感謝Quassnoi – ntan 2009-10-26 14:35:34
@Quassnoi:只是想知道,但比ORDER BY mycol是鑄造更高效+ 0 – dnagirl 2009-10-26 14:40:09
不錯的主意我試駕它 – ntan 2009-10-26 14:42:26