各位大侠:
小弟有问题请教。请问为什么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;
其他信息:
该列数据类型:Float length 5
character_set_client:gbk
character_set_connection:gbk
character_set_database:gbk
character_set_server:utf8
character_set_system:utf8
|