MySQL SELECT、UPDATE、DELETE 加上 WHERE 條件,想說應該就沒有問題,但是若型態不對,可能會出現意想不到的結果。
MySQL SQL 語法 需要注意 型態自動轉換問題
MySQL 可以用 SELECT 來直接看型態自動轉換造成預期外的效果。
- SELECT '[email protected]' = 0; -- 1 (不應該為 1)
- SELECT * FROM Table_name WHERE id = 0; -- id 型態是 varchar 秀出下述
- 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' 就不會有問題。