在同一查询中显示或隐藏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 |
+---------------+

这可能吗?

您不能在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 ...。如果为false,则查询为SELECT accounts.email FROM ...

最新更新