MySQL查询
各位大侠:小弟有问题请教。请问为什么MySQL 的CASE判断会出错?
需求:我想用lie8(请移驾原始数据部分)乘以100,取小数点前面的数字并转换为INTEGER,再用CASE语句判断数值范围,
>=10为1,<10 and >=8 为2,其他为3。
问题:但当lie8的值为0时,CASE出来的结果1,应该为3才对。所有请教各位。
原始数据:
阿坝 0.9
德阳 0.0338
甘孜 0
雅安 0
资阳 0
......
自贡 0.0224
全省 0.0192
错误的输出结果(除阿坝为1外,其余为3才对):
阿坝 3
德阳 3
甘孜 1
雅安 1
资阳 1
........
自贡 3
全省 3
查询语句:
select city as 'city', case substring_index(lie8*100,'.',1)
when cast(substring_index(lie8*100,'.',1) as UNSIGNED INTEGER) >= 10 then 1
when cast(substring_index(lie8*100,'.',1)as UNSIGNED INTEGER)< 10
and cast(substring_index(lie8*100,'.',1) as UNSIGNED INTEGER) > 8 then 2
else 3
END as 'qujian'
from jh_securities;
其他信息:
该列数据类型:Floatlength 5
character_set_client:gbk
character_set_connection:gbk
character_set_database:gbk
character_set_server:utf8
character_set_system:utf8
先谢谢各位了。
尼玛的,case后面跟个列名居然不报错,SQL Server里面就报错。加上列名后就统计结果就不对了。我那个插。
正确的SQL是:
select
city,
case
when lie8 >= 0.1 then 1
when lie8 < 0.1 and lie8 >= 0.08 then 2
else 3
end
from
jh_securities;
看来case when用的不到家,
谢谢 case filed when 这样用判断数字会出错。字符还没试,试了再回帖。 末猪 发表于 2012-12-27 11:19 static/image/common/back.gif
尼玛的,case后面跟个列名居然不报错,SQL Server里面就报错。加上列名后就统计结果就不对了。我那个插。
...
kider 哥,在case后面加要判断的列,在字符和数字方面都会判断出错。不能发图,很悲剧。各位自己搞了。 北京最好的癫痫病医院 http://haoyy.yuqinge.com/dxyy/
北京最好的癫痫病医院 http://jiankang.zkxww.com/
北京最好的癫痫病医院 http://health.lzbs.com.cn/yiyuan/
北京治疗癫痫病的医院 http://haoyy.yuqinge.com/lzyy/
北京治疗癫痫病的医院 http://jiankang.zkxww.com/
北京治疗癫痫病的医院 http://jkbk.thmz.com/bjdxbyy/9689275443.html
北京治疗癫痫病的医院 http://health.lzbs.com.cn/dianxian/
北京市最好的癫痫医院 http://jiankang.zkxww.com/
北京癫痫病医院排名榜 http://health.lzbs.com.cn/dianxian/
北京癫痫病医院排名榜 http://jiankang.zkxww.com/
页:
[1]