无法在T-SQL中检查空字符

时间:2014-06-13 05:00:33

标签: c# tsql sql-server-2008-r2

我有一个具有以下属性的类:

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?的答案解决了我的问题。因此关闭这个问题。

1 个答案:

答案 0 :(得分:0)

char不能为null,因为它是值类型。因此,有些事情是将您的状态属性设置为' \ 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)