我們知道,在不同的數據庫引擎中,內置函數的實現、命名都是存在差異的,如果經常切換使用這幾個數據庫引擎的話,很容易會將這些函數弄混淆。
比如說判斷空值的函數,在Oracle中是NVL()函數、NVL2()函數,在SQL Server中是ISNULL()函數,這些函數都包含了當值為空值的時候將返回值替換成另一個值的第二參數。
但是在MySQL中,ISNULL()函數僅僅是用於判斷空值的,接受一個參數並返回一個布爾值,不提供當值為空值的時候將返回值替換成另一個值的第二參數。
SELECT ISNULL('i like yanggb'); // 0 SELECT ISNULL(NULL); // 1
因此MySQL另外提供了一個IFNULL()函數。
簡單介紹
IFNULL()函數是MySQL內置的控制流函數之一,它接受兩個參數,第一個參數是要判斷空值的字段或值(傻?),第二個字段是當第一個參數是空值的情況下要替換返回的另一個值。如果第一個參數不是NULL,則返回第一個參數;否則,將返回第二個參數。兩個參數都可以是文字值或表達式。
函數的語法
IFNULL(v1, v2)
其中,如果v1不為NULL,則IFNULL函數返回v1; 否則返回v2的結果。
簡單示例
SELECT IFNULL(NULL, 'i like yanggb'); // i like yanggb
在上面的例子中,由於第一個參數為NULL,所以返回的是第二個參數的值。
SELECT IFNULL('i like yanggb', 'i do like yanggb'); // i like yanggb
在上面的例子中,由於第一個參數不為NULL,所以返回的是第一個參數的值。
"你好像瘦了,頭發也變長了,背影陌生到讓我覺得,見你是上個世紀的事,然后你開口叫我名字,我就想笑,好像自己剛剛放學,只在校門口等了你五分鍾而已。"
