在评估零长度整数时,TSQL LEN函数返回1

时间:2011-10-17 12:42:13

标签: sql sql-server tsql

我正在使用SQL Server 2008。

我发现LEN函数在整数没有值时计算整数时不会返回零 - 它返回1。

例如:

declare @int1 int
set @int1 = ''
select LEN(@int1)

返回1而不是零!但是整数是零长度的!

这是为什么?这是一个错误吗?

3 个答案:

答案 0 :(得分:6)

INT没有长度。这就是你实际做的......

  • 创建INT变量
  • 创建零长度字符串''
  • 将该字符串CAST到INT 0
  • 将结果分配给变量
  • 将变量的值转换为STRING '0'
  • Caclulate该字符串的长度

结果是你的LEN函数没有在''上调用,但实际上是在'0'上调用,其长度为1。

答案 1 :(得分:2)

你应该为整数指定NULL,以表示“我没有价值”

类似的东西:

declare @int1 int 
set @int1 = null
select @int1 
union
select LEN(isnull(cast(@int1 as varchar),''))

返回

NULL
0

答案 2 :(得分:1)

int1将初始化为'0',因此它返回正确的结果:

declare @int1 int set @int1 = '' 
select @int1
select LEN(@int1)

返回:

0

1