我有以下查询:
`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}`
但是我仍然以纯逗号分隔的字符串形式获取它。
是否可以执行此操作,或者我必须在服务器上而不是在查询本身上手动将其转换?
答案 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)