如何修改PostgreSQL查询以返回条件对应的布尔值列
修改后的PostgreSQL查询
直接将每个条件作为布尔列返回即可,PostgreSQL会自动将表达式结果转换为true/false:
SELECT attrs @> '[{"Key": "baz", "Value": "false"}]' AS baz, attrs @> '[{"Key": "spam", "Value": "false"}]' AS spam, jsonb_array_length(vals) = 1 AS "length" FROM foo WHERE id = ( SELECT id FROM bar WHERE tag @> '[{"Value":"val"}]' ) AND ( attrs @> '[{"Key": "baz", "Value": "false"}]' OR attrs @> '[{"Key": "spam", "Value": "false"}]' OR jsonb_array_length(vals) = 1 );
说明
- 每个条件直接作为列定义,结果自动是布尔值,对应条件是否满足
length是PostgreSQL关键字,所以用双引号"length"包裹列名避免语法错误- 保留原WHERE子句,确保只返回原本符合筛选条件的行
内容的提问来源于stack exchange,提问作者Mr.
相关产品推荐
相关产品推荐

