MySQL 将字符串转换为数字类型并进行排序

这篇具有很好参考价值的文章主要介绍了MySQL 将字符串转换为数字类型并进行排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

示例数据: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    深圳     980

SELECT * 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    上海        6100

select * 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    上海        6100

select * 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    上海        6100

select * from area_gdp ORDER BY CONVERT(gdp,SIGNED) DESC
# 查询结果如下
2    上海        6100
3    广州        6000
1    北京        1200
4    深圳        980

unsigned 表示无符号,不能表示小数
signed 表示有符号,可以表示小数文章来源地址https://www.toymoban.com/news/detail-451171.html

到了这里,关于MySQL 将字符串转换为数字类型并进行排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【byte类型数据转换16进制字符串】

    1.byte类型数据长度为8bit(8位), 例如00101110。 2.16进制字符长度4bit(4位), 例如1101,表示D。 3.那么一个byte可以用2(8bit/4bit=2)个16进制字符表示。 4. 1中的00101110可分为0010和1110两部分。 5. 0010可以由00101110右移动4位获得,即001011104。注意,在java中byte是无符号的,全为正的,所有应该做

    2024年02月16日
    浏览(39)
  • java怎么把字符串转换成日期类型

    1、java怎么把字符串转换成日期类型 2、Java如何将指定字符串转化为指定日期格式 3、求JAVA高手解答!有关于字符串类型转换成日期型! 4、Java中怎么把字符串转换成日期格式啊 5、java中怎样将字符串转换成日期形式存入数据库 定义一个字符串类型的时间 java字符串转日期 ;创

    2024年02月06日
    浏览(43)
  • 【Golang】二进制字符串转换为数字

     在本文中,我们将探讨如何使用 Go 语言将十六进制字符串转换为二进制字符串,将不定长整型补码字符串转换为数字,以及如何将 IEEE754 标准的单精度(32位)和双精度(64位)浮点数字符串转换为数字。最后,我们将讨论如何将布尔类型的二进制字符串转换为布尔值。 这

    2024年01月16日
    浏览(34)
  • Java中字符串和日期类型的相互转换

    当在Java中进行字符串和日期类型之间的相互转换时,可以使用 SimpleDateFormat 类来实现。下面是一个详细的代码示例,展示了如何将字符串转换为日期类型,以及如何将日期类型转换为字符串。 首先,我们来看字符串转换为日期类型的示例代码: 在上述代码中,我们首先定义

    2024年02月14日
    浏览(49)
  • golang 类型转换interface转字符串string

    方式一和方式二适用于interface和各种转换 方式三如果需要将一个普通的类型转换成字符串,可以使用 strconv 包中的相关函数。例如,将一个整数转换成字符串:

    2024年02月12日
    浏览(40)
  • vue中Number方法将字符串转换为数字

    写法: Number(变量名)。例如: 具体情况: 1、如果字符串前面带有0或者其他符号,JS自动忽略 例如: 2、如果字符串是空的或空格,会转换成0 例如: 3、如果是true转换为1,false转换为0 例如: 4、如果是函数、对象、json、undefined,则转换为NAN,表示转不了 5、如果是数组 ①空

    2024年02月06日
    浏览(39)
  • 【使用moment.js将字符串类型的日期转换为date类型】

    后端存储的时间类型为字符串类型,前端DatePicker组件展示时需要转换为日期类型。 需要处理的日期: ‘01-30-2023’ 处理后的时间: momentObj 即为datePicker组件展示所需格式,时间格式如上图。

    2024年02月17日
    浏览(42)
  • 在JavaScript中将字符串转换为数字的7种方法

    原始地址:https://dev.to/sanchithasr/7-ways-to-convert-a-string-to-number-in-javascript-4l 使用parseInt() parseInt()解析字符串并返回一个整数。可以包含空格。只返回第一个数字。 然而,该方法有一个限制。如果解析的是小数,它将四舍五入为最近的整数值,并将该值转换为 字符串 。一个可能

    2024年02月05日
    浏览(46)
  • Go语言变量使用指南:声明、类型转换与字符串操作

    深入了解Go语言中变量的声明方式、字符和布尔类型的细节、字符串的不可变性以及基本数据类型之间的转换规则。

    2024年02月10日
    浏览(70)
  • C# 把字符串(String)格式转换为DateTime类型方法

    Convert.ToDateTime(string)  注意:string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方式二:DateTime.Parse(string) 参考:将字符串转换为 DateTime | Microsoft Learn DateTime.Tostring()//这个转换之后是YYYY/MM/DD HH:MM:SS DateTime.ToShortString()//这个转换之后是YYYY/MM/DD Convert.ToDateTime(string)//string是你要转换成时间

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包