2014-05-16 70 views
0

按照我的代碼如何分配SQL Server中的int類型NULL類型

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 @[email protected]+1 
     end 
end 

如果團隊表沒有行select MAX(IOrder) from Team語句返回NULL值,以便聲明if @no=NULL是不正確的,因爲@noint類型,那麼SQL服務器返回一個錯誤Null value is eliminated by an aggregate or other SET operation. 那麼如何解決它?

回答

0

使用is 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 @[email protected]+1 
     end 
end 

您的代碼可以改爲使用isnull()代替。

declare @Iorder int 
select @Iorder = 1 + isnull(max(IOrder), 0) from Team 
+0

這是正確的。非常感謝。 – TienKenji

0

您可以簡單地以簡短形式完成此操作。

嘗試這種情況:

begin 
    declare @Iorder int 
    SELECT @Iorder = ISNULL(MAX(IOrder),0)+1 FROM Team 
end 

說明:

@Iorder爲1(即,0 + 1),如果是MAX(IOrder) NULL。

否則,@Iorder將是MAX(IOrder)+1

+0

沒錯。非常感謝你。 – TienKenji

+0

@TenKenji:那麼請隨時接受答案。如果您不知道如何接受答案,請[**閱讀此**](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –

0

使用SELECT ISNULL(MAX(IOrder),0) FROM Team(返回0空的情況下),然後卸下的if else檢查空值,SELECT ISNULL(MAX(IOrder),0) + 1 FROM Team如果你想增加的值

相關問題