SQL字符型字段按數(shù)字型字段排序實現(xiàn)方法
這是很久之前的就遇到的問題了,去年寫了個WP插件:WordPress投票插件Ludou Simple Vote,由于有些使用者需要一個投票排行榜,所以需要用一條SQL來讀取按得分排序的文章列表。
Ludou Simple Vote的投票得分結果是以自定義欄目的方式存儲在WordPress的postmeta中,分值存放在meta_value字段,而meta_value字段類型是longtext,如果直接使用下面的SQL查詢語句來排序:
那么按得分排序得到的結果可能是:
1
10
11
123
1234
2
25
253
3
由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預想的數(shù)字順序排序呢?下面介紹兩種方法。
一、采用MySQL的cast函數(shù),轉換字段格式
這里我們將meta_value字段轉換成數(shù)值類型的字段DECIMAL,然后再進行排序:
需要注意的是,你所要排序的meta_value字段的值必須都是可轉換成數(shù)字,否則將會出錯。
二、使用MySQL絕對值函數(shù)ABS
使用MySQL絕對值函數(shù)ABS,它告訴MySQL使用絕對值來處理處理這個字段:
相關文章
MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法
這兩天剛試用了一下MySQL5.6.51,感覺還不錯,有兄弟戲稱是一個高富帥版本?,F(xiàn)將MySQL5.6.51 zip解壓版本的安裝配置過程記錄如下,希望能給需要安裝該版本的朋友一點參考作用2015-08-08
CentOS7下mysql 8.0.16 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了CentOS7下mysql 8.0.16 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解
這篇文章主要介紹了MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解,InnoDB是MySQL中一種常用的事務性存儲引擎,它具有很多優(yōu)秀的特性,其中,Doublewrite Buffer是InnoDB的一個重要特性之一,本文將介紹Doublewrite Buffer的原理和應用,需要的朋友可以參考下2023-07-07
MySQL4 File ‘c:\mysql\share\charsets\?.conf’ not found (Errc
File ‘c:\mysql\share\charsets\?.conf’ not found (Errcode: 22) Character set ‘#33′ is not a compiled character set and is not specified in the ‘c:\mysql\share\charsets\Index’ file2013-08-08
Advanced SQL Injection with MySQL
Advanced SQL Injection with MySQL...2006-12-12

