选择PostgreSQL中jsonb列的值

ie3xauqp  于 2023-03-22  发布在  PostgreSQL
关注(0)|答案(3)|浏览(133)

我有一个表'Documents',其中有一列'Tags'与'jsonb'数据类型。

[{"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的新手。

hi3rlvi2

hi3rlvi21#

最短的版本是:

SELECT DISTINCT value->'Tag' AS tag
FROM Documents, jsonb_array_elements(Documents.Tags);

jsonb_array_elements() function将JSONB数组解嵌套为一组行,其中只有一列称为“value”。它在Documents表上使用了隐式“横向连接”。
这将给你不同的标签作为jsonb值。如果你想让它们作为text值,使用->>运算符而不是->

acruukt9

acruukt92#

你也可以使用下面的代码片段。

SELECT DISTINCT
  Tags::json->'Tag'
FROM Documents;
olqngx59

olqngx593#

自Postgres 9.6+以来

SELECT DISTINCT
  Tags->>'Tag'
FROM Documents;

相关问题