sql - select 语句列中的条件 null 不为 null - SQL Server

标签 sql sql-server-2008 select multiple-columns conditional-statements

请看一下这个并让我知道可能的解决方案?

表格中显示的数据:

select a,b,d,e from table xyz.
  • 当 c 为 null 时显示 d 的值

  • 当 c 不为 null 时显示 e 的值

所需数据:

数据看起来像这样

a b  c          d e 
1 2  null         2
1 2  not null   2  

根据以上数据,如果c为空,则显示d = b,否则显示e = b。

如何为上述条件编写正确的 SQL 查询,正如我尝试的情况,它不起作用。

提前致谢。

最佳答案

SELECT CASE WHEN c IS NULL THEN d ELSE e END

关于显示 d = b else e = b 的部分让我相信您可能也在尝试比较 NULLNOT NULL 值。

重要的是要了解 SQL NULL 表示“未知”,因此无法在已知值和未知值之间进行比较。

在这种情况下,我建议使用 Coalesce将 NULL 值更改为不会影响您的逻辑的类似值。

Coalesce(d, 0) = b

关于sql - select 语句列中的条件 null 不为 null - SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17957858/

相关文章:

python - sqlalchemy+sqlite 去除带点的列名?

c# - 从 SQL Server 2008 到 C# 的地理函数(多边形/ map 区域内部或外部的纬度和经度点)

asp.net - 如何在VB中正确检查DBNull?

MySQL按月获取行数和分组到列标题

PHP MySQL - 在 <Select></select> 表单上显示值

sql - View 或表函数或其他东西

mysql - 如何在自连接中编写随行的当前迭代而变化的条件

sql - 需要在sql中获取上个月只有3个字母JUL

Mysql select 查询在大量行上变慢

mysql - 每个键选择两行最近的时间