天天看點

警告!MySQL函數IFNULL和COALESCE的注意事項

假設現在有一張表:

CREATE TABLE `demo` (
  `id` int(11) NOT NULL,
  `score` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;      

然後我們有這樣的SQL語句進行查詢(表中此時無資料):

SELECT IFNULL(t.score,0) FROM demo t where t.id = 1;

SELECT COALESCE(t.score,0) FROM demo t where t.id = 1;

期望的結果是0,對吧,可輸出的值呢?

竟然都為null!應該怎麼辦才能拿到我們想要的結果呢?

SELECT IFNULL((SELECT t.score FROM demo t where t.id = 1),0) ;

SELECT COALESCE((SELECT t.score FROM demo t where t.id = 1),0);

需要通過select把值擷取後作為IFNULL和COALESCE函數的參數!