【发布时间】:2011-07-08 12:50:50
【问题描述】:
使用常规语句和准备好的语句执行完全相同的查询时,我得到了不同的结果,我认为这是一个类型转换错误。
mysql> show columns from server where field = "vlan";
+-------------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------+------+-----+---------+-------+
| vlan | int(5) | YES | MUL | NULL | |
+-------------+--------+------+-----+---------+-------+
mysql> select hostname from server where `vlan` = '184.182' limit 1;
Empty set (0.00 sec)
mysql> prepare stupid from "select hostname from server where `vlan` = ? limit 1";
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> set @vlan = '184.182';
Query OK, 0 rows affected (0.00 sec)
mysql> execute stupid using @vlan;
+-------------------+
| hostname |
+-------------------+
| web20.servers.com |
+-------------------+
1 row in set (0.00 sec)
vlan 的实际值为184
看起来 mysql 处理类型转换的方式对于准备好的语句和常规语句是不同的?那有意义吗?我该如何解决这个问题?
【问题讨论】:
-
如果执行
where vlan = '184.182'会怎样? -
如前所述,在这种情况下没有任何结果
标签: mysql types type-conversion prepared-statement