2015-09-06 101 views
1

我在technologies列有如下記載:PostgreSQL的JSON類型返回null

[{"id":1,"name":"PHP"},{"id":2,"name":"Laravel"}] 

當我運行查詢,如:

SELECT technologies->>'name' AS name FROM technologies; 

它總是返回null,雖然記錄是在那裏。

我使用的是Postgres 9.3

+0

你有元素的數組在那裏,所以你需要先獲得所需的數組元素:'(技術 - > 1) - >>「name'' –

回答

2

你有JSON元素的數組在那裏,所以你需要先獲得所需的數組元素:(technologies -> 0)->>'name'(technologies -> 1)->>'name'

您也可以使用該功能json_array_elements轉換的元素行:

select json_array_elements(technologies)->>'name' 
from technologies; 
+0

它的工作原理。謝謝。但是如果結構呈現爲'['item1','item2']'。我怎麼接受,因爲這裏沒有鑰匙。 – Volatil3

+1

@ Volatil3如果你有一個不同的JSON文檔,那你爲什麼要在你的問題中顯示那個?這又是一個數組,您需要使用' - >'運算符提取每個元素,或者使用'json_array_elements'函數將其拆分爲行。真正的問題實際上是:爲什麼你首先將這些信息存儲爲JSON?僅僅因爲JSON目前被炒作,Postgres支持它真的很好,並不意味着你需要拋棄一切關於正確的關係設計的東西。 –

+0

原諒,實際上我有一些結構,我應該把它們放在裏面。回答你的問題。類型是'json',因爲將來結構會發生變化,創建一個單獨的表並加入可能會改變的東西並不好。 – Volatil3