数据表中有一个字段 是 bigint(20) unsigned
我进行如下操作:mysql> SELECT fid FROM t_test WHERE fid IN (0x034358000017333);
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
| 14695522661135156 |
+-------------------+奇怪地返回了两个记录....
再用如下操作:mysql> SELECT fid FROM t_test WHERE fid IN (14695522661135155 );
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
+-------------------+正确地返回了一个记录.
于是我试试用conv 函数来处理...
结果如下: conv是对的.
mysql> select conv("034358000017333",16,10);
+-------------------------------+
| conv("034358000017333",16,10) |
+-------------------------------+
| 14695522661135155 |
+-------------------------------+
1 row in set (0.00 sec)不过select 出来的还是两个记录....疯了....
mysql> SELECT fid FROM t_test WHERE fid IN ( conv("034358000017333",16,10));
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
| 14695522661135156 |
+-------------------+
很奇怪...求解...
我进行如下操作:mysql> SELECT fid FROM t_test WHERE fid IN (0x034358000017333);
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
| 14695522661135156 |
+-------------------+奇怪地返回了两个记录....
再用如下操作:mysql> SELECT fid FROM t_test WHERE fid IN (14695522661135155 );
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
+-------------------+正确地返回了一个记录.
于是我试试用conv 函数来处理...
结果如下: conv是对的.
mysql> select conv("034358000017333",16,10);
+-------------------------------+
| conv("034358000017333",16,10) |
+-------------------------------+
| 14695522661135155 |
+-------------------------------+
1 row in set (0.00 sec)不过select 出来的还是两个记录....疯了....
mysql> SELECT fid FROM t_test WHERE fid IN ( conv("034358000017333",16,10));
+-------------------+
| fid |
+-------------------+
| 14695522661135155 |
| 14695522661135156 |
+-------------------+
很奇怪...求解...
14695522661135155估计问题是浮点数的问题,这么大的数,mySQL估计是转化成浮点数然后进行运算了。双精度最大可以表示
1.79769313486232 e308
15个有效数字。所以你的In 估计会选出 146955226611351xx 所有的数据。
[align=center]==== 思想重于技巧 ====
[/align]
SELECT fid FROM t_test WHERE fid IN (conv(034358000017333,16,10));
[align=center]==== 思想重于技巧 ====
[/align]
[align=center]==== 思想重于技巧 ====
[/align]
LZ的数值还没有超过BIGINT的范围吧
^_^