[英]mysql only compares first numerical part of string to int column in where
這更像是一個“為什么”或“任何指向文檔的指針”的問題。
今天我意識到,如果與 INT 列相比,WHERE 子句中的比較只需要字符串的第一個數字部分。 (我自己的結論)
例如:
SELECT * FROM companies c WHERE id = '817m5'
仍將返回 id = 817 的公司。
這確實是有道理的,但我無法在任何地方找到這個記錄,看看我的結論是否正確,以及是否還有其他關於這種確切行為的信息需要了解。 WHERE
,INT類型,比較文檔? 在哪里? 怎么稱呼?
謝謝!
這是比較:
WHERE id = '817m5'
並且id
是整數。
因此,MySQL必須將整數與字符串進行比較。 好吧,它不能直接做到這一點。 它必須將字符串轉換為數字或將數字轉換為字符串。 MySQL通過將前導數字字符轉換為字符串來將其轉換為數字。 因此, '817m5'
變為817
。
這是確切的報價:
要將字符串轉換為數字上下文中的數字值,通常不必執行其他任何操作,只需要像使用數字一樣使用字符串值即可:
mysql> SELECT 1+'1'; -> 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.