簡體   English   中英

mysql 僅將字符串的第一個數字部分與 int 列進行比較,其中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM