我在C#中有一条SQL语句(针对SQL Server 2k8运行的.NET Framework 4),如下所示:
SELECT [Column1] FROM [Table1] WHERE [Column2] = @Column2
上面的查询可以与以下ADO.NET代码一起正常工作:
DbParameter parm = Factory.CreateDbParameter();
parm.Value = "SomeValue";
parm.ParameterName = "@Column2";
//etc...
即使我将DBNull.Value分配给DbParameter的Value成员,即使Column2中有空值,此查询也返回零行。如果我更改查询以专门容纳null测试:
SELECT [Column1] FROM [Table1] WHERE [Column2] IS @Column2
我在运行时收到“'@ Column2'附近的语法不正确”的异常。我无法在SELECT语句的WHERE子句中使用null或DBNull作为参数吗?
最佳答案
你可以用
SELECT [Column1] FROM [Table1] WHERE [Column2] = ISNULL(@Column2 , 'value');
“值”可以是您希望其表示的任何值。如果要匹配具有空列的column2,
SELECT [Column1] FROM [Table1] WHERE ISNULL([Column2], 'value') = ISNULL(@Column2 , 'value');
关于c# - 如何将DBNull值传递给参数化的SELECT语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4998151/