Select PostgreSQL 中 jsonb 列的值
Select value of jsonb column in PostgreSQL
我有一个 table '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 的新手。
最短的版本是:
SELECT DISTINCT value->'Tag' AS tag
FROM Documents, jsonb_array_elements(Documents.Tags);
jsonb_array_elements()
function 将 JSONB 数组取消嵌套到一组行中,其中包含一个名为 "value" 的列。它在 Documents
table.
上使用隐式 "lateral join"
这为您提供了不同的标签作为 jsonb
值。如果您希望它们作为 text
值,请使用 ->>
运算符而不是 ->
。
您还可以使用以下代码段。
SELECT
id,
data::json->'name' as name
FROM books;
我有一个 table '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 的新手。
最短的版本是:
SELECT DISTINCT value->'Tag' AS tag
FROM Documents, jsonb_array_elements(Documents.Tags);
jsonb_array_elements()
function 将 JSONB 数组取消嵌套到一组行中,其中包含一个名为 "value" 的列。它在 Documents
table.
这为您提供了不同的标签作为 jsonb
值。如果您希望它们作为 text
值,请使用 ->>
运算符而不是 ->
。
您还可以使用以下代码段。
SELECT
id,
data::json->'name' as name
FROM books;