[英]MySQL integer comparison ignores trailing alpha characters
因此,可以說我有一個ID僅是int的表。 我發現正在運行:
SELECT *
FROM table
WHERE ID = '32anystring';
返回id = 32的行。顯然是32!='32anystring'。
這看起來很奇怪。 為什么這樣做? 可以關閉嗎? 什么是最好的解決方法?
在大多數編程語言中,將字符串轉換為數字時,通常會將前導數字解釋為數字。
有兩種方法可以解決此問題:
使用准備好的語句,並定義將值放入數字類型的位置的占位符。 這將完全防止將字符串放在此處。
在應用程序的更高層進行檢查以驗證輸入並確保其為數字。
在mysql中使用BINARY關鍵字(我只是猜測這是可行的,從未嘗試過,因為我總是在運行查詢之前實施了正確的驗證系統)-
SELECT *
FROM table
WHERE BINARY ID = '32anystring';
你需要讀這個
http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html
'1.23def' * 2
> number(可以執行'1.23def' * 2
=> 2.46),只要它仍然是有效數字,就盡可能地解析該字符串。 如果首字母不能為數字的一部分,則結果為0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.