X

MySQL SQL 語法 需要注意 型態自動轉換問題

MySQL SELECT、UPDATE、DELETE 加上 WHERE 條件,想說應該就沒有問題,但是若型態不對,可能會出現意想不到的結果。

MySQL SQL 語法 需要注意 型態自動轉換問題

MySQL 可以用 SELECT 來直接看型態自動轉換造成預期外的效果。

  • SELECT 'example123@gmail.com' = 0; -- 1 (不應該為 1)
  • SELECT * FROM Table_name WHERE id = 0; -- id 型態是 varchar 秀出下述
    • aexample@gmail.com
    • bexample@gmail.com
    • zexample@gmail.com
    • example@yahoo.com.tw
  • DELETE FROM Table_name WHERE id = 0; -- id 型態是 varchar,此次發現問題就是因為這個語法,然後 DELETE 到不是自己所想的值

此篇有更簡單的範例參考:sql - MySQL - Select on varchar column with 0 (zero) as criteria returns all rows?

  • SELECT
    'foo' = '0', -- false (預期內的)
    'foo' = 0, -- true!
    '0foo' = 0 -- true ("0foo" starts with "0")

解法

  • 要避免這個問題,主要是型態要對,若上述型態 varchar,WHERE 條件後面 id = '0' 就不會有問題。

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post