如何在sql server中为int类型分配NULL类型
遵循我的代码如何在sql server中为int类型分配NULL类型,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,遵循我的代码 begin declare @Iorder int set @Iorder=0 declare @no int set @no=(select MAX(IOrder) from Team) if @no=NULL set @Iorder=1 else begin set @Iorder=(select MAX(IOrder) from Team) se
begin
declare @Iorder int
set @Iorder=0
declare @no int
set @no=(select MAX(IOrder) from Team)
if @no=NULL
set @Iorder=1
else
begin
set @Iorder=(select MAX(IOrder) from Team)
set @Iorder=@Iorder+1
end
end
如果团队表中没有行请从团队中选择MAX(IOrder)
语句返回NULL
值,因此语句如果@no=NULL
不正确,因为@no
是int
类型,那么SQL Server返回的错误NULL值将通过聚合或其他集合操作消除。
那么如何修复它呢?使用
的测试为空
begin
declare @Iorder int
set @Iorder=0
declare @no int
set @no=(select MAX(IOrder) from Team)
if @no is null
set @Iorder=1
else
begin
set @Iorder=(select MAX(IOrder) from Team)
set @Iorder=@Iorder+1
end
end
declare @Iorder int
select @Iorder = 1 + isnull(max(IOrder), 0) from Team
您的代码可以改为使用isnull()
重写
begin
declare @Iorder int
set @Iorder=0
declare @no int
set @no=(select MAX(IOrder) from Team)
if @no is null
set @Iorder=1
else
begin
set @Iorder=(select MAX(IOrder) from Team)
set @Iorder=@Iorder+1
end
end
declare @Iorder int
select @Iorder = 1 + isnull(max(IOrder), 0) from Team
您可以简单地用一个简短的形式完成这一切
试试这个:
begin
declare @Iorder int
SELECT @Iorder = ISNULL(MAX(IOrder),0)+1 FROM Team
end
说明:
如果MAX(Iorder)
为空,则@Iorder
将为1(即0+1)
否则,@Iorder
将是MAX(Iorder)+1
使用从团队中选择ISNULL(MAX(Iorder),0)(如果为null,则返回0)并删除if-else以检查null值,从团队中选择ISNULL(MAX(Iorder),0)+1(如果您想要增加值)@TienKenji,然后如果你不知道如何接受答案,请。