有条件地 select postgres 中的一列 SQL

Conditionally select a column in postgres SQL

说我有一个 table 这样的:

    table messages
id | show_message | message
 3 |   false      | "some message"
 4 |   true       |  "another message"

如果 show_message 列为真,我只想 select 消息列,但我也想 select 显示消息列。在场景中子查询会是 suitable 吗?我觉得我想多了。我正在使用 Postgres 9.5

简单的 case 怎么样?

select id, show_message, (case when show_message then message end) as message
from t;

这将在结​​果集中的 message 列中为未显示的消息放置一个 NULL 值。

SQL 查询 return 一组固定的列。因此,这是您可以对单个查询执行的最佳操作。如果你真的想要一个有时有两列有时有三列的结果集,那么就需要某种条件逻辑或动态 SQL。