2014-01-29 71 views
0

表測試自動更改類型在MySQL

CREATE TABLE IF NOT EXISTS `test` (
     `id` int(11) NOT NULL AUTO_INCREMENT, 
    `sd` int(11) NOT NULL, 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; 

,如果我用這個查詢

SELECT * FROM test WHERE id="1A" 

發現搜索一行數據,ID = 1,但1A不等於1. 我應該怎麼做那是查詢找到正確的。 對不起,我的英語。

+0

你應該比較喜歡到喜歡。如果該字段是整數,則傳遞一個整數值,並且只傳遞一個整數值。 –

+0

您的預期產出是多少?你爲什麼要嘗試1A時,ID是增加2 –

回答

0

試試這個

SELECT * FROM test WHERE id LIKE '%1A%' 

試圖查詢看起來返回1 :)。但你應該尋找整數值或使用LIKE statment

+0

它實際上是相反的。 'id'是整數類型,所以你應該確保搜索的變量是一個int,而不是將id轉換爲字符串。 – ToBe

+0

你確定類似的操作在一個整數列上工作嗎? –

+0

是的,我會告訴你一個小提琴 –

0

當您指定

WHERE id = '1A' 

你告訴MySQL來比較的int爲字符串(該你id列的類型)。事實上,你含蓄告訴MySQL來做到這一點:

WHERE id = CAST('1A' AS INT) 

CAST('101A' AS INT)值是整數101 CAST('A101' AS INT)值是整數零。這種隱含的類型轉換可能很麻煩,因爲它默默地發生。你需要小心這個。

要搜索一個整數做到這一點的最好辦法是這樣的:

WHERE id = 1