首页 > 解决方案 > 在同一查询中显示或隐藏 PostgreSQL 中的列

问题描述

如何根据布尔值在同一查询中显示或隐藏列?我正在使用的应用程序允许将 JavaScript 放在双大括号之间,并且布尔值将来自该括号。

我正在想象这样的解决方案:

SELECT
  accounts.email,
  IF( {{my JavaScript will return a boolean here}} )
    accounts.zip
WHERE accounts.email = 'none@none.com';

如果布尔值为真,结果将是:

+---------------+-------+
|     email     |  zip  |
+---------------+-------+
| none@none.com | 20500 |
+---------------+-------+

如果布尔值为 false,则结果将是:

+---------------+
|     email     |
+---------------+
| none@none.com |
+---------------+

这甚至可能吗?

标签: postgresql

解决方案


您不能在 SQL 本身中动态更改要选择的列;您必须在应用程序级别执行此操作。因此,如果您需要遵循现有代码中的模式,则必须在 JavaScript 而不是 SQL 中分配列:

var query = 
`SELECT
  accounts.email
  { booleanResult ? ', accounts.zip' : '' }
FROM myTable
WHERE accounts.email = 'none@none.com'`

这样,当您的布尔值为真时,您的查询为SELECT accounts.email, accounts.zip FROM .... 当它为假时,您的查询是SELECT accounts.email FROM ....


推荐阅读