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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql語句修改欄位型別和增加欄位SQL型別
- C# 實現list=list.OrderBy(q=>q.欄位名).ToList(); 按多個欄位排序C#排序
- 快排實現仿order by多欄位排序排序
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序
- pydantic 欄位欄位校驗
- Js實現Object按照值的某個欄位(數值型別)的大小進行排序JSObject型別排序
- 簡單sql欄位解析器實現參考SQL
- Spring MVC @SortDefault多欄位排序SpringMVC排序
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- MongoDB更改欄位型別MongoDB型別
- DB2_更新SQL欄位DB2SQL
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- fastadmin 新增欄位記圖片欄位AST
- ES Mapping ,1 欄位型別APP型別
- MySQL欄位型別最全解析MySql型別
- abc欄位數的使用
- 使用正規表示式對數字字串欄位排序字串排序
- SpringJpa @query 中根據傳入引數(欄位)排序Spring排序
- SQL基礎 AUTO_INCREMENT 欄位SQLREM
- sql設定欄位預設值SQL
- 逆向工程通過某個欄位排序排序
- mysql5.6生成排序欄位MySql排序
- sql 統計多個欄位的和(如果欄位中含有 null 的處理)SQLNull
- mysql sql同一個欄位多個行轉成一個欄位查詢MySql
- MYSQL SET型別欄位的SQL操作知識介紹MySql型別
- mysql和mongodb替換欄位中某字元MySqlMongoDB字元
- es 更新指定欄位的方法
- [BUG反饋]模型管理 > 欄位管理看不見任何欄位。這表明顯有欄位、!模型
- [BUG反饋]新建欄位無法使用字元型預設值字元
- 【mongo】mongo 欄位型別互轉Go型別
- Django 常用欄位和引數Django
- WTForms 欄位 引數 校驗ORM
- sqlserver採集欄位的sql語句SQLServer
- Sql 查詢 置頂、排序,置頂和非置頂為不同的排序欄位SQL排序
- MySQL:count(*) count(欄位) 實現上區別MySql
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- 【Mongo】mongo更新欄位為另一欄位的值Go