我有一个名为“Process”的表。它有以下列:
- 进程号
- 进程类型
- 状态
- 创建日期
- 更新日期
- 创建者
Status 可以是 1,2,3 和 null。
- 状态 1 = 批准过程
- 状态 2 = 未获批准的过程
- 状态 3 = 已取消流程
- 状态 null = 进行中
现在我有一个带有网格、下拉菜单和按钮的页面。下拉列表包含“批准(1),不批准(2),取消(3)”选项。我正在做的是,如果下拉列表中没有选择,我将获取所有记录。我得到下拉的值,如果下拉没有选择,它是空的。在 SQL 查询中,我实现了如果 @status 参数为 null 则获取所有记录,如果 @status 参数获得值 (1,2,3) 然后我过滤它.以下是查询:
@status as int = null
Select *
From Process
where @status IS NULL
Or Process.status = @status
到这里为止,一切对我来说都很好。现在有趣的是我需要在下拉进行中中添加一个新选项。在进程表中, 正在进行的进程具有空值。我已经在决定@status 是否为空以获取所有记录。如果在下拉列表中没有选择获取所有记录,如果选择了进行中,那么我如何管理只获取状态为空的记录?请提出建议。
最佳答案
我想你想要这样的东西:
Select p.*
From Process p
where coalesce(p.status, 'In Progress') = @status;
我应该注意到您的查询不正确,因为 = NULL
never 返回 true。我假设您希望您的原始查询是:
Select *
From Process
where @status is null or
Process.status = @status
关于mysql - SQL Server 中如果value 为null 有两种含义,如何获取记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40647775/