【问题标题】:Ignoring a column when condition doesnt match in select query - SQL-Oracle当条件不匹配在SELECT查询中时忽略列 - SQL-Oracle
【发布时间】:2010-12-07 00:56:18
【问题描述】:

我的要求是当条件满足时在选择查询中显示一个列,当条件不匹配时不显示该列。

例如:在下面这个简单的表格中

表:XYZ

Name    ID  Fairness
------  --  --------
harish  3   White
ravi    5   brown 
arun    2   black 
rahul   5   white

查询:

select name,
       case id when 5 then " I Like to learn more languages" end as Remarks,
       Fairness
from xyz
where id=2

我的要求是在上面的查询中“备注”列不应该显示在输出中,但是我的输出是

实际输出:

Name  Remarks  Fairness
----  -------  --------
arun  null     black

预期输出:

Name  Fairness
----  --------
arun  black

即,我需要仅当 where 子句中的 id 为 5 时才显示备注列。

当条件不满足或不满足时,请帮助我忽略“备注”。

【问题讨论】:

  • 你想在什么条件下调用那个查询?

标签: sql oracle


【解决方案1】:

也许您想要 SQL COALESCE 函数?

select coalesce(myMaybeNullColumn, '') from foo

将给出空白而不是空值。

【讨论】:

    【解决方案2】:

    只需在您的查询中添加一个 else 条件,即可为您不想显示的情况返回空白。

    select name,case id when 5 then " I Like to learn more languages" else "" end as Remarks, Fairness from xyz where id=2
    

    【讨论】:

    • 他说“即,我需要仅当 where 子句中的 id 为 5 时才显示备注列”如果他添加“else”“”他会看到该列是空的
    • 没错,我误会了。但是如果没有存储过程来在选择中实现这一点,那是不可能的。也许我会将备注添加到现有列中,而不是创建一个新列(如果这当然满足要求)。
    • 是的,完全acc,另一方面,我看不到他的问题,因为如果从prgrammcode中调用此选择,他可以检查那里第二列的内容。在 pl/sql 中这不是一个真正的问题
    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多