2011-07-09 26 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。 –