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

tus*_*eau 1 sql t-sql sql-server

我正在使用SQL Server 2008.

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

例如:

declare @int1 int
set @int1 = ''
select LEN(@int1)
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*lie 6

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

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

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