MySQL 字串到數字的轉換之謎:為什麼'String' = 0 回傳True
當字串列與0 進行比較時,令人驚訝的結果發生了:它的評估結果為true。這種意外行為源自於 MySQL 的隱式型別轉換機制。
MySQL 根據以下規則自動將字串轉換為數字:
在'string' = 0 的情況下,由於字串不以數字開頭,因此計算結果為0。此轉換導致比較結果為 '0' = 0,這是正確的。
但是,當字串與非零數字或字串進行比較時,不會發生轉換。因此,'string' = -12 或 'string' = '0' 按預期計算結果為 false。
要覆寫此預設行為,您可以使用運算子強制轉換為特定資料類型。例如, '0string' 0 將字串 '0string' 轉換為數字,使比較 '0' = '0' 有效。
這個轉換機制也可以用來對包含數字的字串執行算術運算。例如,'1abc' '2ef' 會將字串轉換為數字並對它們求和,得到 3。
理解這種類型轉換行為對於避免 MySQL 查詢中出現意外結果至關重要。透過利用運算子明確控制轉換,您可以確保比較和計算的準確性。
以上是為什麼 MySQL 中 \'String\' = 0 回傳 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!