2011-07-09 29 views
0

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

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

我回到此行

ITEM_ID是一个i​​nt自动递增列。我如何防止这种情况发生?

+2

你想从那个查询中找回什么? – Magnus

+1

如果item_id是一个int,那么它为什么会等于'1001-1001'? –

+0

你如何防止发生了什么? – Flimzy

回答

3

item_id是一个整数列。

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

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

如果你想找到一个范围内所有ID,请尝试使用BETWEEN ... AND ... operator代替:

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

不要引用事情是不是字符串。

+0

这不是一个有用的/完整的答案。如果他要删除引号,他会搜索item_id 0,这也无济于事。 – Flimzy

+0

这实际上有点帮助,因为我可以在php中检查if_nummeric,然后将其转换为int,否则使用-1。 –