SQL字元型欄位按數字型欄位排序實現方法
這是很久之前的就遇到的問題了,去年寫了個WP外掛:WordPress投票外掛Ludou Simple Vote,由於有些使用者需要一個投票排行榜,所以需要用一條SQL來讀取按得分排序的文章列表。
Ludou Simple Vote的投票得分結果是以自定義欄目的方式儲存在WordPress的postmeta中,分值存放在meta_value欄位,而meta_value欄位型別是longtext,如果直接使用下面的SQL查詢語句來排序:
複製程式碼 程式碼如下: 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`)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2810336/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 欄位排序排序
- LINQ 按多個欄位排序排序
- C# 實現list=list.OrderBy(q=>q.欄位名).ToList(); 按多個欄位排序C#排序
- sql語句修改欄位型別和增加欄位SQL型別
- sqlite sql 修改欄位型別SQLite型別
- 快排實現仿order by多欄位排序排序
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- mysql中文欄位排序MySql排序
- 巧用欄位對映實現指定欄位的搜尋
- varchar型別的欄位儲存純數字的排序型別排序
- oracle 修改欄位型別的方法Oracle型別
- SQL Server中根據某個欄位,ID欄位自動增長的實現SQLServer
- 細說SQL SERVER中欄位型別SQLServer型別
- SQL新增表欄位SQL
- DB2的字元型欄位,NULL與空串DB2字元Null
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序
- pydantic 欄位欄位校驗
- 修改欄位資料型別的方法資料型別
- Js實現Object按照值的某個欄位(數值型別)的大小進行排序JSObject型別排序
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- MySQL 按照指定的欄位排序MySql排序
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- MongoDB更改欄位型別MongoDB型別
- oracle的欄位型別Oracle型別
- PHP指定欄位的多維陣列排序方法PHP陣列排序
- 簡單sql欄位解析器實現參考SQL
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- [案例] 字元型欄位統計資訊只對前32位進行統計字元
- 欄位字元型別不匹配導致CPU佔用率高字元型別
- hadoop streaming 按欄位排序與輸出分割詳解Hadoop排序
- Spring MVC @SortDefault多欄位排序SpringMVC排序
- jQuery對Table一個欄位排序jQuery排序
- mysql表最多欄位數MySql
- abc欄位數的使用
- MySQL欄位型別最全解析MySql型別
- date、timestamp欄位型別型別
- MySQL欄位型別小記MySql型別