2013年6月21日 星期五

MySQL關於IFNULL、ISNULL、NULLIF

最近專案是從SQL SERVER移到MYSQL,

許多語法搬到MYSQL上會有一些差異,

在MSSQL中你可能會這樣使用ISNULL

SELECT ISNULL(columnName,default) FROM TABLE

SELECT ISNULL(NULL,1)
-->1

表示當某個欄位為NULL時,呈現default。

但在MYSQL中的ISNULL用法是,

SELECT ISNULL(columnName) FROM TABLE

SELECT ISNULL(NULL)
-->1

SELECT ISNULL('TEST')
-->0

這代表判斷某個欄位是不是NULL,是的話呈現1,否則呈現0。

而IFNULL可以表示有預設值的呈現,

SELECT IFNULL(columnName,default) FROM TABLE

SELECT IFNULL(NULL,1)
-->1

用法同MSSQL的ISNULL,判斷為NULL時呈現default,

另一個比較不常見的語法NULLIF,

SELECT NULLIF(columnName,columnName) FROM TABLE

SELECT NULLIF(1,1)
-->NULL

SELECT NULLIF(1,0)
-->1

意思是當兩個值相等時呈現NULL,否則呈現1。

沒有留言:

張貼留言