mysql查询where column_name = a与column_name = 0相同?

时间:2013-11-20 00:05:38

标签: php mysql sql get

当我运行查询时,例如:

  

“SELECT * FROM program_detaljer,其中program_ref_id ='a'”

我得到的结果是program_ref_id = 0。

为什么会发生这种情况,当program_ref_id列应该是int(11)?

1 个答案:

答案 0 :(得分:1)

您应该阅读types conversion in mysql

在比较之前,mysql尝试将字符串('a')转换为数字('0')。

mysql> SELECT 0='a';
+-------+
| 0='a' |
+-------+
|     1 |
+-------+
1 row in set, 1 warning (0.00 sec)

您可以在查询前检查值。或者将=替换为LIKE :)。 (但最好在之前检查值类型。)

mysql> SELECT 0 LIKE 'a';
+------------+
| 0 LIKE 'a' |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)