gpt4 book ai didi

mysql - SQL Server 中如果value 为null 有两种含义,如何获取记录?

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:42 25 4
gpt4 key购买 nike

我有一个名为“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com