2012-12-31 84 views
3

我有這個簡單的查詢錯誤的結果來自查詢

SELECT * 
FROM `book` 
WHERE `BookID` = '7u' 
LIMIT 1 

我想到空的結果 但我看到一個結果與圖書ID = 7。 BookID是自動增量。 爲什麼查詢忽略'你'字符?

+0

數字中沒有「字符」,而BookID是數字字段。 –

+1

當你說這是錯誤的結果時,你期望什麼?你想要一個空的結果嗎? (據推測'7u'是不允許在你的'BookID'字段中)。 – halfer

+0

你是對的。我編輯了我的問題。 – user1903750

回答

4

因爲7u不是數字,所以顯然mysql忽略了u

也許你正在考慮一些使用後綴來限定數字類型的高級編程語言?在C-衍生語言,7U將與價值7

+2

換句話說,當您將數字字段與非數字值進行比較時,可能會將其轉換爲整數/數字 – jeremy

+0

我可以做些什麼來防止此問題或任何解決方案? – user1903750

+3

@ user1903750:刪除'u'。爲什麼它在那裏呢?另外,看看數據。使用自動增量列,它是嚴格的數字。 – wallyk

0

正因爲兩個原因,一個無符號整數:

  1. 有可能只有一個記錄。

  2. 您正在使用LIMIT 1,只顯示輸出中的一條記錄。所以使用LIMIT 5或2

+0

嗨。你錯過了我的觀點。我的問題是我期望沒有結果,但我得到一個。檢查wallyk的答案。 – user1903750

0

了MySQL採用字符串作爲7U所以當你嘗試做這個東西它在一個串上覆羽然而MySQL並非嚴格模式,以覆羽字符串轉換成整數,因爲你的身份證是整數,它的舍入7u成爲7這就是爲什麼它顯示一個記錄嘗試沒有報價7u而不是'7u',那麼它會給出錯誤