我有一个 SQL 表“国家”,其中包含 CountryId 和 StateId。StateId 可以为 null,因为并非所有国家/地区都有州。我想检查表中是否存在国家/州的组合。如果表中的国家/地区为“NL”且州为 NULL,并且我使用以下查询,其中countryId =“NL”且 stateId = null:
return await conn.ExecuteScalarAsync<bool>(@"SELECT COUNT(*)
FROM [dbo].[Countries]
WHERE [CountryId] = @CountryId
AND [StateId] = @StateId",
new { countryId, stateId });
Run Code Online (Sandbox Code Playgroud)
它将返回 false。我期待一个真实的回应。有人可以解释这种行为以及解决此问题的最佳方法是什么吗?
这不是 Dapper 的问题。使用 = 运算符将任何内容与 NULL 进行比较通常会返回 false。您必须使用“is null”进行比较,即
AND [StateId] is null
Run Code Online (Sandbox Code Playgroud)
(至少在 SQL Server 上)。当然,这意味着如果 stateid 为 null,您的查询将不得不有所不同。
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |