MySQL 将字符串转换为数字类型并进行排序
目录
- 1. 方法一: `字段值 + 0`
- 2. 方法二: 通过 `cast()` 函数
- 3. 方法三: 通过 `CONVERT()` 函数
需要对接第三方统计系统,并且第三方系统给的数据那真的是一团乱,害,都是泪呀,头发又感觉凉飕飕的;数据有毒,所有的 小数
都是用 varchar(20)
保存的,现在有要对该数据进行排序并展示。
示例数据:area_gdp 表
id | area | gdp |
---|---|---|
1 | 北京 | 1200 |
2 | 上海 | 6100 |
3 | 广州 | 6000 |
4 | 深圳 | 980 |
select * from area_gdp ORDER BY gdp ASC# 查询结果如下
1 北京 1200
3 广州 6000
2 上海 6100
4 深圳 980SELECT * FROM area_gdp ORDER BY gdp DESC
# 查询结果如下
4 深圳 980
2 上海 6100
3 广州 6000
1 北京 1200
结果与预想的不一样,其实 MySQL
没有想象中的那么智能,对于 char
或者是 varchar
类型的数据,只会当做字符串进行对待,所以会依次的对字符串中的每一个字符进行排序。
如果明确知道 char
或者是 varchar
里面保存的是数字类型,可以在排序的时候将字段转换成数字,并实现想要的排序功能;这里提供三种方法,如果有其他更好的可以互相交流一下。
示例数据:area_gdp 表
id | area | gdp |
---|---|---|
1 | 北京 | 1200 |
2 | 上海 | 6100 |
3 | 广州 | 6000 |
4 | 深圳 | 980 |
1. 方法一: 字段值 + 0
MySql
会根据上下文自动转换类型,这里会将被本来是字符类型的字段值以数值型返回,如果字段存放的值为数值字符,则会转换为数值型返回,如果字段存放的值为字母或者汉字,则直接返回 0
。
# 示例SELECT 'abd'+0 # 结果为 0
SELECT 'abd5'+0 # 结果为 0
SELECT '5abd'+0 # 结果为 5
SELECT '5abd5'+0 # 结果为 5
SELECT '55'+0 # 结果为 55
# 解决上面的问题select * from area_gdp ORDER BY gdp+0 ASC# 查询结果如下
4 深圳 980
1 北京 1200
3 广州 6000
2 上海 6100select * from area_gdp ORDER BY gdp+0 DESC
# 查询结果如下
2 上海 6100
3 广州 6000
1 北京 1200
4 深圳 980
2. 方法二: 通过 cast()
函数
CAST()
函数,把一个字段的值转成另一个类型并输出。
用法: CAST ( 字段名 AS 转换的类型 )
select * from area_gdp ORDER BY CAST(gdp AS SIGNED) ASC# 查询结果如下
4 深圳 980
1 北京 1200
3 广州 6000
2 上海 6100select * from area_gdp ORDER BY CAST(gdp AS SIGNED) DESC
# 查询结果如下
2 上海 6100
3 广州 6000
1 北京 1200
4 深圳 980
unsigned
表示无符号,不能表示小数signed
表示有符号,可以表示小数
3. 方法三: 通过 CONVERT()
函数
CONVERT()
函数,把一个字段的值转成另一个类型并输出。
用法: CONVERT ( 字段名 , 转换的类型 )
select * from area_gdp ORDER BY CONVERT(gdp,SIGNED) ASC# 查询结果如下
4 深圳 980
1 北京 1200
3 广州 6000
2 上海 6100select * from area_gdp ORDER BY CONVERT(gdp,SIGNED) DESC
# 查询结果如下
2 上海 6100
3 广州 6000
1 北京 1200
4 深圳 980
unsigned
表示无符号,不能表示小数signed
表示有符号,可以表示小数
博客地址:Roc’s Blog
MySQL 将字符串转换为数字类型并进行排序相关推荐
- mysql 将字符串转换数字类型的_MySQL 字符串类型用数字可以查出来 MySQL字符串类型会转换成数字 MySQL隐式类型转换...
一.发现问题 1.在一次MySQL查询中,某字段为 varchar 字符串类型,传入参数值为 int 数字类型,发现查询的结果和预期的不一致. 如: 某两列 name='11' , name = '1 ...
- TextBox字符串转换为数字类型
int result = int.Parse(textBox1.Text): decimal result = decimal.Parse(textBox1.Text): 转载于:https://ww ...
- mysql 十六进制 转换为字符串_在MySQL中将十六进制字符串转换为数字?
使用该CONV()方法将十六进制字符串转换为数字-select CONV(yourColumnName,16,10) AS anyAliasName from yourTableName; 让我们首先 ...
- Go 学习笔记(47)— Go 标准库之 strconv(string/int 互相转换、Parse 字符串转换为指定类型、Format 指定类型格式化为字符串)
参考: http://c.biancheng.net/view/5112.html 在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string . int . int64 . float ...
- Swift3.0语言教程字符串转换为数字值
Swift3.0语言教程字符串转换为数字值 Swift3.0语言教程字符串转换为数字值,在NSString中,开发者可以将字符串转换为数字值,通过这些数字值可以实现一些功能,如加法运算.减法运算等.数 ...
- c#语言中怎么样把文本转换成数字,如何将字符串转换为数字 - C# 编程指南 | Microsoft Docs...
如何将字符串转换为数字(C# 编程指南) 02/16/2021 本文内容 你可以调用数值类型(int.long.double 等)中找到的 Parse 或 TryParse 方法或使用 System. ...
- JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例
JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例 "John Doe" -> String 'John Doe' -> String &quo ...
- java 如何将数值型字符转换为数字_Java 如何将字符串转换为数字 专家详解
在编程中我们经常需要进行各种数据类型之间的转换操作,下面将为您介绍如何将字符串转换为数字.首先我们需要了解各种数据类型的表示,String在java中为字符串类型,int在java中为整数类型,大小在 ...
- C语言实现将字符串转换为数字的方法
C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型.长整型.浮点型等)的数字.以下是用atoi()函数将字符串转换为整数的一个例子: 代码如下: # include <stdio. h ...
最新文章
- 应用程序正常初始化(0xc0000135)失败的解决方法
- 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim
- 正则表达式入门之使用元字符
- LeetCode 528. 按权重随机选择(前缀和+二分查找)
- OA,ERP等源码一部分演示
- Keil MDK从未有过的详细使用讲解
- 运筹优化(四)--线性规划之对偶问题和灵敏度分析
- 【EMNLP2020】“自言自语”来实现无监督常识问答
- DBeaver数据库可视化工具
- 2021计算机二级考试五月报名,2021年5月全国计算机等级考试报名时间
- [HAOI2009]毛毛虫(树的直径)
- Unity 基于图像处理的图像显示特效制作过场特效
- marshmallow之自定义Field
- 计算机主板品牌排行榜,电脑主板十大品牌排行榜
- 'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- bat 脚本修改IE浏览器代理服务器
- 总线概述及常见总线(转)
- unity编程实践-牧师与魔鬼动作分离版
- c语言程序 出圈游戏,【出圈】 (C语言代码)
- Windows系统上搭建私有云OwnCloud【保姆级别的教程】
热门文章
- FPGA高速收发器GTX/GTH关于外部参考时钟MGTREFCLK的设计
- python3使用timeit库做函数性能时间测试
- 十六倍数看视视频,无需会员,两行代码解决
- 昨天,微软加更.NET7中文手册,都有哪些新亮点?
- 如何解决开发板背光上电过快导致的闪屏和画面撕裂?
- 中国微电机行业需求规模与竞争格局研究报告2022版
- 离散数学学习笔记——第六讲——二元关系(4.1 序偶和笛卡儿积)
- 字节跳动笔试题02万万没想到之抓捕孔连顺
- Linux配置双网卡--静态路由
- linux sysrq使用方法,Linux中SysRq的使用[zt]