在我的C#代码中,我必须像这样执行SQL查询:

context.ExecuteStoreQuery("SELECT * FROM MyTable WHERE Field0 = {0} AND
    Field1 = {1}", field0, field1)


当c#中的field1 = null且数据库中的NULL时,此查询不起作用。 (我必须对IS NULL使用不同的语法)

我如何不做if就纠正这个问题(实际上,我有10个字段...)?

最佳答案

默认情况下,SQL Server不允许您将值与null进行比较。所有比较都解析为false,即使是逻辑上相反的比较。换句话说,您可以执行以下操作:

where field = 1where field <> 1。如果field为null,则两个逻辑上都解析为false。

无论如何,您都需要在查询中显式检查null

context.ExecuteStoreQuery(@"SELECT * FROM MyTable WHERE
    (Field0 = {0} or (Field0 is null and {0} is null))  AND
    (Field1 = {1} or (Field1 is null and {0} is null))", field0, field1)

10-02 01:56
查看更多