ISNULL函数是个挺方便的功能,不过偶尔也会带来一些意料之外的麻烦(起始这是对该函数了解不够造成的)
ISNULL ( check_expression , replacement_value )
参数
check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
通过上面的函数说明,如下Demo也就比较好理解了
DECLARE @A CHAR(8) = NULL
SELECT 'a' + ISNULL(@A, '') + 'b'
如果想不通,那么可以按照如下方式来理解ISNULL函数
DECLARE @A1 CHAR(8) = @A ;
IF @A1 IS NULL
SELECT @A1 = ''
RETURN @A1
想一想,我们为固定长度的char赋值时,值的长度小于字符串的长度,结果会怎样?用空格补齐缺失的长度!所以INULL(@A, '')如果@A确实为NULL的时候,返回8个空格也就没什么不好理解的了。