1. 程式人生 > >Mysql中對字串型別的欄位進行數字值排序

Mysql中對字串型別的欄位進行數字值排序

ORDER BY `meta_value`

那麼按得分排序得到的結果可能是:

1
10
11
123
1234
2
25
253
3

     由於是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那麼怎樣才能按照我們預想的數字順序排序呢?下面介紹兩種方法。

一、採用MySQL的cast函式,轉換欄位格式

     這裡我們將meta_value欄位轉換成數值型別的欄位DECIMAL,然後再進行排序:

程式碼如下:

ORDER BY CAST(`meta_value` AS DECIMAL)

     需要注意的是,你所要排序的meta_value欄位的值必須都是可轉換成數字,否則將會出錯。

二、使用MySQL絕對值函式ABS

     使用MySQL絕對值函式ABS,它告訴MySQL使用絕對值來處理處理這個欄位:

程式碼如下:

ORDER BY ABS(`meta_value`)

二、使用MySQL絕對值函式ABS

在需要排序的欄位後增加 *1 或者+0

程式碼如下:

ORDER BY meta_value*1

ORDER BY meta_value+0