我有這個簡單的查詢錯誤的結果來自查詢
SELECT *
FROM `book`
WHERE `BookID` = '7u'
LIMIT 1
我想到空的結果 但我看到一個結果與圖書ID = 7。 BookID是自動增量。 爲什麼查詢忽略'你'字符?
我有這個簡單的查詢錯誤的結果來自查詢
SELECT *
FROM `book`
WHERE `BookID` = '7u'
LIMIT 1
我想到空的結果 但我看到一個結果與圖書ID = 7。 BookID是自動增量。 爲什麼查詢忽略'你'字符?
因爲7u
不是數字,所以顯然mysql忽略了u
。
也許你正在考慮一些使用後綴來限定數字類型的高級編程語言?在C-衍生語言,7U將與價值7
換句話說,當您將數字字段與非數字值進行比較時,可能會將其轉換爲整數/數字 – jeremy
我可以做些什麼來防止此問題或任何解決方案? – user1903750
@ user1903750:刪除'u'。爲什麼它在那裏呢?另外,看看數據。使用自動增量列,它是嚴格的數字。 – wallyk
正因爲兩個原因,一個無符號整數:
有可能只有一個記錄。
您正在使用LIMIT 1,只顯示輸出中的一條記錄。所以使用LIMIT 5或2
嗨。你錯過了我的觀點。我的問題是我期望沒有結果,但我得到一個。檢查wallyk的答案。 – user1903750
了MySQL採用字符串作爲7U所以當你嘗試做這個東西它在一個串上覆羽然而MySQL並非嚴格模式,以覆羽字符串轉換成整數,因爲你的身份證是整數,它的舍入7u成爲7這就是爲什麼它顯示一個記錄嘗試沒有報價7u而不是'7u',那麼它會給出錯誤
數字中沒有「字符」,而BookID是數字字段。 –
當你說這是錯誤的結果時,你期望什麼?你想要一個空的結果嗎? (據推測'7u'是不允許在你的'BookID'字段中)。 – halfer
你是對的。我編輯了我的問題。 – user1903750