mysql 文本可以max_001和005能用mysql中max()比较吗?

展开全部

在数据库中当然是可以e5a48de588b63231313335323631343130323136353331333431343633对001和005使用聚合函数max()进行大小比较的,但是我们必须要留意文本型数值和数字型数值在比较数值大小时,数据库引擎对不同的字段数据类型其比较的结果可能会有所不同!下面举例说明一下:

比如 10和9,按数字比较大小则 10>9,但是如果按文本比较大小则 '10'

数据库中字符和字串比较大小的排序规则基本上与我们日常使用的字词典里的排序规则相互吻合,两个字符或字串根据它们在字典中的排序位置我们通常不必依赖电脑运算就可以判断出谁大谁小。

现在我们实测一下使用聚合函数Max()对比文本数据类型字段和数字类型字段的比较结果,以下是SQL实验代码:

drop table if exists t2;

-- 创建测试表t2含文本数据型“数字”字段和数字类型字段

create table t2(id int auto_increment primary key,

charNum varchar(10),digitNum int);

-- 插入测试数据

insert into t2(charNum,digitNum) values

('001',1),('005',5),('0010',10);

-- 查看待测数据

select * from t2;

-- 直接选出文本“数字”字段中的最大值和数字字段中的最大值

select max(charNum) as maxCharNum,

max(digitNum) as maxDigitNum from t2;

-- 将文本“数字”字段转换为数字类型后再选出其最大值,以及直接选出数字字段最大值

select max(convert(charNum,signed)) as maxConvertCharNum,

max(digitNum) as maxDigitNum from t2;

测试截图:

4eba55e37435a03484320159444ec687.png

待测数据:

d30ab574693aae1c8c93c4d35cf21d8e.png

直接对文本和数字两种数据类型字段使用Max()函数的返回结果对比:

2e9e46edb8cafa2d21744f37bff79ee3.png

我们可以看到直接对文本数据类型字段使用Max函数选出的最大值是“005”而非“0010”

下面是将文本数据类型数字转换为数字数据类型后才使用Max函数的对比结果:

6132826f1691b0c2bda2632fe9769fa0.png

我们可以看到对文本类型字段使用Max函数的最大值已经跟数字数据类型字段的最大值一样了,都是10。

总结:

直接对字符型数据类型字段使用聚合函数Max()、Min()所返回的极值将遵循一般字(词)典对字(词)里设定的排序规则,所选出的最大(小)值不一定是数字意义上的极值,如果需要得出严格数字意义上的极值就必须先进行类型转换,否则得出的结果可能会与期望值有出入。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值