PostgreSQL-在选择查询中返回JSON数组而不是逗号分隔的值

时间:2019-03-23 09:56:20

标签: postgresql

我有以下查询:

`SELECT * FROM reports
        WHERE id = ${req.params.id}`

type具有以下值:"item1,item2,item3"

我想将其作为JSON数组返回:["item1","item2","item3"]

我尝试过:

`SELECT *, string_to_array(type, ',') AS type FROM reports
        WHERE id = ${req.params.id}`

但是我仍然以纯逗号分隔的字符串形式获取它。

是否可以执行此操作,或者我必须在服务器上而不是在查询本身上手动将其转换?

1 个答案:

答案 0 :(得分:0)

将数组作为参数传递给to_jsonb()

SELECT to_jsonb(string_to_array(type, ',')) AS type
FROM reports

JSON支持在 Postgres 9.3 (json)和 9.4 (jsonb)中引入。在旧版本中,您可以尝试构建代表json数组的字符串,例如:

with report(type) as (
    values ('item1,item2,item3')
)

select '[' || regexp_replace(type, '([^,]+)', '"\1"', 'g') || ']' as type
from report

           type            
---------------------------
 ["item1","item2","item3"]
(1 row)