c# - 如何使用 Dapper 检查空值
问题描述
我有一个带有 CountryId 和 StateId 的 SQL 表国家。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 });
它将返回错误。我期待一个真实的回应。有人可以解释这种行为吗?解决这个问题的最佳方法是什么?
解决方案
这不是 Dapper 的问题。使用 = 运算符将任何内容与 NULL 进行比较通常会返回 false。您将不得不使用“is null”进行比较,即
AND [StateId] is null
(至少在 SQL Server 上)。这当然意味着如果 stateid 为空,您的查询必须看起来不同。
推荐阅读
- c++ - 容器 std::array 的列表初始化需要双括号
- python - ERRNO 22 - Python - 无效参数 - 为什么这条路径会导致我的错误处理脚本出错?
- haskell - 在 haskell 中使用自定义数据类型
- javascript - 绑定的输入值未出现在请求中
- ios - 如何正确重命名颜色集及其在 iOS 中的所有引用?
- c++ - OpenGL更新VBO顶点bufferSubData
- linux - 如何注释文件中标识的行
- html - CSS 强制换行
- swift - 使用 MVVM 架构的 Firestore 分页 swift
- mediawiki - Semantic Mediawiki 和模板中的属性