在我的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 = 1
和where 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)