我在technologies
列有如下記載:PostgreSQL的JSON類型返回null
[{"id":1,"name":"PHP"},{"id":2,"name":"Laravel"}]
當我運行查詢,如:
SELECT technologies->>'name' AS name FROM technologies;
它總是返回null,雖然記錄是在那裏。
我使用的是Postgres 9.3
我在technologies
列有如下記載:PostgreSQL的JSON類型返回null
[{"id":1,"name":"PHP"},{"id":2,"name":"Laravel"}]
當我運行查詢,如:
SELECT technologies->>'name' AS name FROM technologies;
它總是返回null,雖然記錄是在那裏。
我使用的是Postgres 9.3
你有JSON元素的數組在那裏,所以你需要先獲得所需的數組元素:(technologies -> 0)->>'name'
或(technologies -> 1)->>'name'
您也可以使用該功能json_array_elements
轉換的元素行:
select json_array_elements(technologies)->>'name'
from technologies;
它的工作原理。謝謝。但是如果結構呈現爲'['item1','item2']'。我怎麼接受,因爲這裏沒有鑰匙。 – Volatil3
@ Volatil3如果你有一個不同的JSON文檔,那你爲什麼要在你的問題中顯示那個?這又是一個數組,您需要使用' - >'運算符提取每個元素,或者使用'json_array_elements'函數將其拆分爲行。真正的問題實際上是:爲什麼你首先將這些信息存儲爲JSON?僅僅因爲JSON目前被炒作,Postgres支持它真的很好,並不意味着你需要拋棄一切關於正確的關係設計的東西。 –
原諒,實際上我有一些結構,我應該把它們放在裏面。回答你的問題。類型是'json',因爲將來結構會發生變化,創建一個單獨的表並加入可能會改變的東西並不好。 – Volatil3
你有元素的數組在那裏,所以你需要先獲得所需的數組元素:'(技術 - > 1) - >>「name'' –