选择一个int列,其中'1001-1001'= 1001?

时间:2011-07-09 12:42:55

标签: sql

执行时

SELECT item_id FROM (`phppos_items`) WHERE `item_id` = '1001-1001'

我回到这一行

1001

item_id是一个int自动递增列。我该如何防止这种情况发生?

2 个答案:

答案 0 :(得分:3)

item_id是一个整数列。

因此,当您将其与字符串('1001-1001')进行比较时,此字符串将转换为整数。字符串'1001-1001'将转换为整数1001,因此它与您返回的列匹配。

至于如何避免它,这取决于你想要做什么。如果您正在尝试查找标识为'1001-1001'的行,则该行将不存在,因为该列仅包含整数。

如果您要查找某个范围内的所有ID,请尝试使用BETWEEN ... AND ... operator代替:

SELECT item_id FROM (`phppos_items`) WHERE `item_id` BETWEEN 1001 AND 1001

答案 1 :(得分:0)

不要引用不是字符串的东西。