Working with NULL Values on MySQL
今天在操作 MySQL 的時候剛好遇到新增的欄位資料都是 NULL 造成程式會因此有些問題,所以就想把已存在的 row 該欄位是 NULL 的都填上資料。
本來的 schema 是長這樣:
| id | name | skill |
|---|---|---|
| 1 | abc | 1 |
| 2 | def | 1 |
| 3 | ghy | 4 |
後來新增加一欄 level
| id | name | skill | level |
|---|---|---|---|
| 1 | abc | 1 | NULL |
| 2 | def | 1 | NULL |
| 3 | ghy | 4 | NULL |
所以就想說直接先都把 level 設為 1,所以直接下了下面這個指令
UPDATE `role` SET level = 1 WHERE level = NULL;
結果什麼都沒更新到...,後來 google 了一番,原來 NULL 是特別的存在,官方表示 NULL means “a missing unknown value”,如果要對 NULL 做判斷要用 IS NULL or IS NOT NULL;所以正確的語法應該要用這樣:
UPDATE `role` SET level = 1 WHERE level IS NULL;
最後終於搞定啦!
參考: