mysql奇怪的查询问题,float查询不出来
有一个表,Cindex int userid Int, f_month float,另外两个为 字符
1853, 2152, 67.2, '2009-11-07 00:00:00', '2152'
1854, 2152, 67.2, '2009-11-07 00:00:00', '2152'
67.2 对应 字段为 float
我用查询语句 : select Cindex from TB_app_CheckIndex where ( F_Month = 67.2);
检索结果为空 ?
请指教
67.2 是无法准确用 8个字节以浮点数来表示的。
或者说 8个字节在计算机中无法表示所有的 1-2 之间有所以实数(小数),具体请参考 IEEE 754
所以浮点数的=比较本身就是不可靠的。一般来说浮点数可以用于> < 的比较。
在软件设计中,如果一定要做=比较,一般是用 <一个非常小的数来实现。
SQL code
mysql> select * from t_ex3206 where abs(F_Month - 67.2) <1e-5;
+--------+---------+
| Cindex | f_month |
+--------+---------+
| 1 | 67.2 |
| 2 | 67.2 |
+--------+---------+
2 rows in set (0.00 sec)
mysql>
[Quote = #1楼 SQL77(77C#+SQL) ]FLOAT不标准,你先查询一下所有值就看得出来了,转成VARCHAR再比较试试[/Quote]
一楼的方法也不错。
SQL code:
mysql> select * from t_ex3206 where concat(f_month,'')=67.2;
+--------+------
相关问答:
一个行业网站,要实现的功能要求为:
一搜索表单可选搜索 产品/资讯/商家,搜索时希望先搜标题后全文,当前的数据量估计3万多,定位期望在百万级也可用。
数据类型为innodb,当前的方法是对关键词进行 ......
我用一个循环往数据库里面存文件,本来可以作为文件存放数据库里面只放文件的位置的,但是没有办法租的服务器网页空间大小有限制数据库没有限制。语句是这样的
public static final DataBase.MAXSIZE=102 ......
我现在学习MYSQL,问下mysql储存过程如何建立和使用,最好写成$sql="sql语句",$re=mysql_query($sql);谢谢
建议你先自己看一下文档中的例子。
http://dev.mysql.com/doc/refman/5.1/zh/stored-pro ......
有一条sql语句 select a.name ,b.name from tableA a,tableB b where a.id = b.id and 。。。(其他过滤条件)
其中a.id 为tableA主键 有唯一性索引 数据量才1千多
b.id 为日志表tableB 的外键 ,慢去条件的才 ......
不知道是不是我的xampp有问题,mysql是图形化的!
一个ID组在我的mysql的表里面 2,5,8,7
点了排序,然后用PHP文件连接这个表显示表的信息时,ID的顺序还是不变!应该是2,5,7,8的吧升序排序后!
在PHP文件里 ......