为什么"SELECT ISNULL(LEFT(NULL,8),'1234567890')"的结果"返回为'1'而不是'1234567890'?

war*_*990 3 sql sql-server

我有这个问题

SELECT ISNULL(LEFT(NULL, 8), '1234567890')
Run Code Online (Sandbox Code Playgroud)

我得到的结果是'1'而不是'1234567890'.我错过了什么?

我正在使用SQL Server 2014.

小智 5

ISNULL和COALESCE之间的一个区别是ISNULL将参数的长度限制为第一个,而COALESCE则不然.尝试以下方法来了解其中的差异

DECLARE @i AS VARCHAR(4) = NULL, 
        @j AS VARCHAR(6) = 'abcdefg' 

SELECT ISNULL(@i, @j)
SELECT COALESCE (@i, @j)
Run Code Online (Sandbox Code Playgroud)