我有一个表'Documents‘,它有一个数据类型为'jsonb’的列'Tags‘。标记列中的示例数据
[{"Tag": "Social Media"}, {"Tag": "Adobe Creative"}]
[{"Tag": "Interactive"}]
[{"Tag": "Web 2.0"}, {"Tag": "Adobe Creative"},{"Tag": "Suite"}]
我需要获取"Tag“的不同值,比如
Social Media
Adobe Creative
Interactive
Web 2.0
Suite
我是PostgreSQL的新手。
发布于 2016-10-19 13:59:05
最短的版本是:
SELECT DISTINCT value->'Tag' AS tag
FROM Documents, jsonb_array_elements(Documents.Tags);
jsonb_array_elements()
function将JSONB数组解嵌到一组行中,这些行只有一个名为"value“的列。它在Documents
表上使用隐式的“横向连接”。
这为您提供了不同的标记作为jsonb
值。如果希望它们作为text
值,请使用->>
运算符而不是->
。
发布于 2020-12-29 01:27:48
您还可以使用以下代码片段。
SELECT
id,
data::json->'name' as name
FROM books;
https://stackoverflow.com/questions/40122565
复制相似问题