TSQL LEN函数在计算零长度整数时返回1
我正在使用SQLServer2008 我发现LEN函数在计算整数时不返回零,而整数没有值,它返回1 例如:TSQL LEN函数在计算零长度整数时返回1,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用SQLServer2008 我发现LEN函数在计算整数时不返回零,而整数没有值,它返回1 例如: declare @int1 int set @int1 = '' select LEN(@int1) 返回1而不是0!但是整数是零长度 为什么会这样?这是一个bug吗?int1将被初始化为“0”,因此它将返回正确的结果: declare @int1 int set @int1 = '' select @int1 select LEN(@int1) 返回: 0 1int1将被初始化为“
declare @int1 int
set @int1 = ''
select LEN(@int1)
返回1而不是0!但是整数是零长度
为什么会这样?这是一个bug吗?int1将被初始化为“0”,因此它将返回正确的结果:
declare @int1 int set @int1 = ''
select @int1
select LEN(@int1)
返回:
0
1int1将被初始化为“0”,因此它将返回正确的结果:
declare @int1 int set @int1 = ''
select @int1
select LEN(@int1)
返回:
0
1整数没有长度。这就是你实际上正在做的
- 创建一个INT变量
- 创建零长度字符串
'
- 将该字符串强制转换为INT
0
- 将结果赋给变量
- 将变量的值强制转换为字符串
'0'
- 计算那根绳子的长度
其结果是,您的LEN函数没有在“”上被调用,而是实际上在长度为1的“0”上被调用。INT没有长度。这就是你实际上正在做的
- 创建一个INT变量
- 创建零长度字符串
'
- 将该字符串强制转换为INT
0
- 将结果赋给变量
- 将变量的值强制转换为字符串
'0'
- 计算那根绳子的长度
其结果是,您的LEN函数没有在“”上被调用,但实际上是在长度为1的“0”上被调用。您应该为整数指定NULL,使其表示“我没有值” 大概是这样的:
declare @int1 int
set @int1 = null
select @int1
union
select LEN(isnull(cast(@int1 as varchar),''))
返回
NULL
0
你应该给整数赋NULL,让它们表示“我没有值” 大概是这样的:
declare @int1 int
set @int1 = null
select @int1
union
select LEN(isnull(cast(@int1 as varchar),''))
返回
NULL
0
仅供参考,谢谢,我应该知道的。谢谢,我应该知道的。