Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26211715
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Mysql/postgreSQL

2009-01-19 09:51:56

今天犯了一个很严重的错误 哈哈,在MYSQL进行聚合查询的时候 有一个表中的一个字段是varchar
我用
select csv from table-name where conditions
发现可以得到一个最大的数字为:4326
后来吧我就用
select max(csv) from table-name where conditions
发现了哈哈居然为950
我奇怪了,不知道是什么原因?聚合不了吗?
后来问了一个公司同事说是字段类型所造成的哦。
于是我查看了一下果然是varchar类型
于是我就将其转换成数据字类型了
select max(cast(csv as unsigned)) from dbmonitor
可以查出来的哦!
别犯错了啊!

总结一下吧:
我于是又重新创建了一个新的表哦其中有一个字段为varchar类型的。
然后我新插了一些数据进来了
查询看效果:
select score from test
可以得到最大的为11
哈哈
来看看比较吧:
select score from test where score<'4'
居然将11也可以查询出来。昏倒!原来是在比较字符串啊。
于是我又改成
select score from test where score<4
哈哈就可以得到我想要的东西了!
原来MYSQL的自动转换原来如此的。
如果用聚合函数的话其实是处理字符串类型的哦,要先进行类型的转换处理然后才能进行聚合查询操作的!
以后要注意了啊!

阅读(2177) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-01-13 15:35:10

我也碰到一个问题,想问下你,跟你这个有点像。可以请教下你吗? 我的QQ是:258246241