在同一查询中显示或隐藏PostgreSQL中的列

时间:2018-11-02 22:50:52

标签: postgresql

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

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

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

如果布尔值是true,则结果将是:

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

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

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

这有可能吗?

1 个答案:

答案 0 :(得分:0)

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

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

这样,当您的布尔值为true时,您的查询就是SELECT accounts.email, accounts.zip FROM ...。如果为假,则查询为SELECT accounts.email FROM ...