0

我是 SQL 新手,我想知道是否可以在单个查询中为每列使用不同的条件从表列中进行选择。例如:假设我有一个表,其中包含名为“姓名”、“生日”和“工资”的三列。当生日或薪水为空时,我想从姓名中进行选择,但如果生日和薪水本身为空,我只想从姓名中进行选择(即,如果一行有姓名,没有生日,有薪水,只有姓名和生日将被选中)。有没有办法在 postgreSQL 中做到这一点?

4

1 回答 1

0

PostgreSQL 中 SQL 查询中的列是固定的(与 Informix 不同,在 Informix 中可以有可变列的结果集)。有。但是有几种方法可以解决这个问题。

  1. 使用 JSON 和一个怪物 CASE 语句。

  2. 使用 HSTORE 和一个怪物 CASE 语句

  3. 使用 JSON 和一个函数来灵活地组装信息。

  4. 使用 HSTORE 和一个函数来灵活地组装信息。

我的建议是,如果你真的想要这个,如果你至少使用 9.1(并且可以安装扩展)或 9.2(即使没有扩展),那么带有函数的 JSON 将是最好的方法。这不是很容易做到,需要一些练习,但这是可能的。

另一种选择是在未找到该值的情况下返回 NULL 并在客户端处理该值。

于 2013-11-02T06:13:48.317 回答