2014-06-13 71 views
1

檢查空字符我有以下屬性的類:不能在T-SQL

public char Status{get;set;} 

這個值傳遞給T-SQL存儲過程來插入表。

未將值分配給此屬性時出現問題。它通過\0給SP。在SP中,我無法弄清楚價值是否存在。以下兩項檢查均失敗。

@value = '' OR @value IS NULL 

什麼是正確的方式來檢查傳遞參數(@value CHAR(1))是否包含有效值?

問題的答案What is the Null Character literal in TSQL?解決了我的問題。因此關閉這個問題。

+2

似乎有關? http://stackoverflow.com/questions/2828333/what-is-the-null-character-literal-in-tsql –

回答

0

char不能爲空,因爲它是一個值類型。因此,有些事情將您的Status屬性設置爲'\ 0'。在調用存儲過程之前,您應該檢查該值。如果發現將DBNull.Value發送給你的存儲過程。

if(Status == '\0') 
    command.Parameters.AddWithValue("@value", DBNull.Value); 
else 
    command.Parameters.AddWithValue("@value", Status); 

然後在你的存儲過程,你可以簡單地檢查

@value IS NULL 

如果您不能更改代碼,那麼該存儲過程,你可以檢查的0,像這樣的字符值內:

@value = CHAR(0) 
+0

確實發生了這種情況,但問題是我無法更改代碼並需要在T-僅限SQL。 – TheVillageIdiot

+0

我更新了我的答案,以顯示如何在存儲過程中檢查該值。 –

+0

不僅僅這樣還不夠,正如@Soner Gonul在回答問題時所回答的答案中所解釋的那樣。 – TheVillageIdiot