SQL Server 2014中的ISNULL()函数出现意外行为
我认为结果是“ABCDEFGHIJ”,但结果是“ABCDE”SQL Server 2014中的ISNULL()函数出现意外行为,sql,sql-server,Sql,Sql Server,我认为结果是“ABCDEFGHIJ”,但结果是“ABCDE” 这是函数的正常行为还是我遗漏了什么?使用函数:不确定为什么IsNULL返回这样的输出,但是假设在检查ISNULLP1,P2时只考虑第一个参数的大小。 Declare @Var1 Varchar(5) = Null Declare @Var2 Varchar(10) = 'ABCDEFGHIJ' SELECT ISNULL(@Var1, @Var2) AS Result 使用函数:不知道为什么IsNULL返回这样的输出,但是假设在检
这是函数的正常行为还是我遗漏了什么?
使用函数:不确定为什么IsNULL返回这样的输出,但是假设在检查ISNULLP1,P2时只考虑第一个参数的大小。Declare @Var1 Varchar(5) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'
SELECT ISNULL(@Var1, @Var2) AS Result
使用函数:不知道为什么IsNULL返回这样的输出,但是假设在检查ISNULLP1、P2时,它只考虑第一个参数的大小。
Declare @Var1 Varchar(5) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'
SELECT ISNULL(@Var1, @Var2) AS Result
这是因为源变量的长度为5,所以它截断了另一部分
SELECT COALESCE(@Var1, @Var2) AS Result
这是因为源变量的长度为5,所以它截断了另一部分
SELECT COALESCE(@Var1, @Var2) AS Result
你使用了varchar5这就是为什么会发生这种情况 下面使用
Declare @Var1 Varchar(10) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'
SELECT ISNULL(@Var1, @Var2) AS Result
这将给出您预期的答案您已经使用了varchar5,这就是为什么会发生这种情况 下面使用
Declare @Var1 Varchar(10) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'
SELECT ISNULL(@Var1, @Var2) AS Result
这将给出您期望的答案您应该使用coalesce函数,因为coalesce函数返回其参数中的第一个非空值
Declare @Var1 Varchar(50) = Null
或者您可以更改声明变量的大小。两者都将提供预期的输出。您应该使用coalesce函数,因为coalesce函数返回其参数中的第一个非空值
Declare @Var1 Varchar(50) = Null
或者您可以更改声明变量的大小。两者都将提供预期的输出。回答您的问题,是的,这是ISNULL的正常行为。它采用第一个表达式的类型 此处引用 如果check_表达式的值不为空,则返回该值; 否则,替换值在隐式调用后返回 如果类型不同,则转换为check_表达式的类型。 如果替换值长于,则可以截断替换值 检查你的表情
作为替代,您应该使用COALESCE来回答您的问题,是的,这是ISNULL的正常行为。它采用第一个表达式的类型 此处引用 如果check_表达式的值不为空,则返回该值; 否则,替换值在隐式调用后返回 如果类型不同,则转换为check_表达式的类型。 如果替换值长于,则可以截断替换值 检查你的表情 作为替代方案,您应该使用COALESCEISNULL@Var1,如果@var1为空,@Var2语句将@Var2的值复制到@var1,并且@var1的长度为5,这就是为什么它只显示前五个字符。ISNULL@Var1,如果@var1为空,且@var1的长度为5,@Var2语句将@Var2的值复制到@var1,这就是为什么它只显示前五个字符