MySQL中对varchar类型排序问题的解决

博客指出在MySQL数据库中,将本应设为int型的字段写成varchar类型,导致排序出现问题。如按字符串排序,结果不符合数值排序预期。同时给出三种解决方案,包括使用number+0排序、-number排序以及使用MySQL函数CAST。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql数据库,把数值型的写成varchar类型 ,其实应该建为int的。因为我只允许输出数字。发现排序有问题。下面简单说一下MySQL的varchar排序问题。

下面,我从数据库里面以number排一下序,大家来看一下排序后的结果

在这里插入图片描述
很明显,我想要的结果应该是 1,2,5,10,21 这样的。但是这个2排在了10的后面。按照字符串来排的。其实我是想把它当做数值来排。

解决方案

1、使用number+0之后再排序,问题解决了。

在这里插入图片描述

2、使用-number之后再排序,问题解决了。但是这种方式会按照意想的方式排序,因为将其实做法是将number转为了负数

在这里插入图片描述
3、使用MySQL函数CAST:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值