将0分配给整数字段变为NULL

时间:2014-07-12 06:52:38

标签: sql-server tsql

我有一个SQL Server脚本

Declare @int Int
Set @int = 0 
select case when @int = '' Then  NULL Else @int  End 

但输出显示NULL而不是0.如何获得正确的输出?

3 个答案:

答案 0 :(得分:3)

空字符串被隐式转换为零,因此返回NULL。这就是SQL服务器的工作方式。

Declare @int Int
Set @int = 0 
select case when @int = '1' Then  NULL Else @int  End 

例如,如果您将字符串更改为' 1',则输出将按预期为0。

答案 1 :(得分:0)

使用ISNULL函数,如果找到null则使用,然后可以设置任何默认值

Declare @int Int
Set @int = 0 
select case when @int = '' Then  0 Else @int  End 

or 

Declare @int Int
Set @int = 0 
select isnull (case when @int = '' Then  NULL Else @int  End , 0) columnname

答案 2 :(得分:-1)

将支票交给Ihor
空Int''被分配0
试试这个

declare @empty  Int
set @empty = ''
select @empty 

@int =''为真,因为''是赋值0