c#中的sql null和null合并运算符

时间:2013-12-07 18:45:47

标签: c# sql sql-server

我有以下sql命令

var Query = new SqlCommand(@"SELECT [file] FROM [ApplicationSettings] WHERE [id] = @id And username=@username", con);
Query.Parameters.AddWithValue("@id", fileName);
Query.Parameters.AddWithValue("@username", userName ?? //then what?! );

userName是一个字符串(sql中的NVARCHAR),有时它有一个值,有时它被设置为null, 所以我有2个案例

username='someUserName'
username=Null

如何在没有if语句或任何其他检查的当前语法中实现此目的

1 个答案:

答案 0 :(得分:2)

尝试类似:

SELECT [file] FROM [ApplicationSettings] 
WHERE [id] = @id And username=ISNULL(@username,username)

如果@username为NULL,它会将用户名与用户名进行比较,该用户名始终为true;如果它不为null,则它将比较username = @username。 您也可以使用CASE进行比较,但我发现上面的语法更加清晰。