我们知道,在不同的数据库引擎中,内置函数的实现、命名都是存在差异的,如果经常切换使用这几个数据库引擎的话,很容易会将这些函数弄混淆。
比如说判断空值的函数,在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,所以返回的是第一个参数的值。