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`)

如果想中文排序我们可参考

城市按拼音排序:

 代码如下 复制代码

SELECT chineseName FROM [表名] order by chinesename collate Chinese_PRC_CS_AS_KS_WS asc

城市按笔划排序:

 代码如下 复制代码

SELECT chineseName FROM [表名] order by chinesename collate Chinese_PRC_Stroke_CS_AS_KS_WS   asc

时间: 2025-01-21 04:07:39

SQL字符型字段按数字型字段排序语句的相关文章

SQL字符型字段按数字型字段排序实现方法_Mysql

这是很久之前的就遇到的问题了,去年写了个WP插件:WordPress投票插件Ludou Simple Vote,由于有些使用者需要一个投票排行榜,所以需要用一条SQL来读取按得分排序的文章列表.      Ludou Simple Vote的投票得分结果是以自定义栏目的方式存储在WordPress的postmeta中,分值存放在meta_value字段,而meta_value字段类型是longtext,如果直接使用下面的SQL查询语句来排序: 复制代码 代码如下: ORDER BY `meta_

字段为char型,如何再sql where 里判断他为空, isnot null 好像不行

问题描述 字段为char型,如何再sqlwhere里判断他为空,isnotnull好像不行 解决方案 解决方案二:为空是isnull吧解决方案三:isnull也不行解决方案四:datalength(字段名称)>0解决方案五:字段=''orlen(字段)=0解决方案六:SELECT*FROMtbWEHREfieldISNOTNULL 解决方案七:where敲错.解决方案八:len(字段)解决方案九:我自己是这样做的replace(字段,'')isnotnull解决方案十:上面的写法是画蛇添足.如果

select-derby数据库where查询关于字符型和数字型单引号问题

问题描述 derby数据库where查询关于字符型和数字型单引号问题 select * from TB_treeinfo where pid = '1' 求高人解答: pid如果是字符型加单引号可以,但是数字型就不能加引号,但是在程序中,pid是不固定的,有可能是字符型也可能是数字型,这个情况怎么处理啊 解决方案 Sql server 数据库中,纯SQL语句查询.执行 单引号问题.RCP Hibernate Derby数据库连接问题 No suitable driver found forRub

请问在C#中如何将字符型的转化为数字型的?

问题描述 我打算用一个TEXTBOX控件穿一个数字型参数给数据库,但提示说Textbox1.Text出错,应该是数据类型不一样,请问在C#中如何将字符型的转化为数字型的? 解决方案 解决方案二:intcount=Convert.ToInt23(textbox1.Text);解决方案三:decimaldvalue=0.0m;if(!decimal.TryParse(this.textBox.Text,outdvalue)){return;//不能转换为数字类型.}Console.WriteLine

SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示

原文:SQL Server 2008 R2--使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示 =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的"联系邮箱(wlsandwho@foxmail.com)"联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途.       本文不定期修

oracle中sql 截取字段中的数字按条件排序

问题描述 oracle中sql 截取字段中的数字按条件排序 请教各位,这个sql怎么拼,我的字段(code)规则是:备案事项[2014]1,前面中文是固定的,然后是括起来的年份(可能是2013,2014,2015等等),后面是流水号(从1,2,3,...,10,..递增的),我想查出所有2013年的数据,要求按后面的流程号数字倒叙排列.恳求大神帮忙,谢谢! 解决方案 假设字段名是code SELECT code, substr(code,INSTR(code,'[', 0, 1)+1,INSTR

当数据库中字段设计为smalint或者tinyint后,程序中要求字段为枚举型,应该怎么设置

我们知道枚举默认和int类型是可以直接强转换的,并不会出现任何错误,但对于其它类型来说, 有可能会有问题,比如,一个enum类型, 如下声明会有错误 enum ProductColumns {   ProductId=1, . . . Status=4294967297, } OK,这样的话,程序会报错,因为它已经超过了int型的范围(int型其实就是Int32结构体类型,32表示最大存储的整型范围是2的32次方) 修改程序为 enum ProductColumns:long { } 让它继承l

关于vfp和DBF问题,怎么让dbf支持空数字型。

问题描述 关于vfp和DBF问题,怎么让dbf支持空数字型. 这是一份可以插入空数字型的DBF文件类型.字段float型可以插入空值,但是不知道用什么软件创建的.我用vfp等等四五种软件创建了类似的无数种类型的DBF文件.都是不可以插入空数字型.网上查了N久,也唯独见到大家说DBF不能插入空数值类型.但是事实情况告诉我.是可以的......不知道有没有知道解决方案的帮下忙看看!万分感谢. 因为这件事困扰了我一个多星期了. (前提是不用visual foxpro那一种文件类型的dbf)因为这种db

SQL server 2005中设置自动编号字段的方法_mssql2005

如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性.在每个表中只能设置一个列的标识属性. 具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号).在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符. 注意: 只能为不允许空值且数据类型为 decimal.int.numeric.smallint.bigin