2016-07-25 95 views
0

我在postgresSQL中有json數據類型的列。直到今天還沒有包含{}或[]的行。如何從json列中刪除{}和[] postgresSQL

但是,由於新的實現,我開始看到{}和[]。我想刪除它。

示例:以下是我的表格。 JSON是JSON數據類型

id |  json  
----+------------------ 
    a | {"st":[{"State": "TX", "Value":"0.02"}, {"State": "CA", "Value":"0.2" ... 
----+------------------ 
b | {"st":[{"State": "TX", "Value":"0.32"}, {"State": "CA", "Value":"0.47" ... 
----+------------------ 
d | {} 
----+------------------ 
e | [] 

,我想如下:

id |  json  
----+------------------ 
    a | {"st":[{"State": "TX", "Value":"0.02"}, {"State": "CA", "Value":"0.2" ... 
----+------------------ 
b | {"st":[{"State": "TX", "Value":"0.32"}, {"State": "CA", "Value":"0.47" ... 

如何,我應該能夠做到這一點?

我已經writen以下查詢:

SELECT * 
FROM tableA 
WHERE json::text <> '[]'::text 

我在哪裏能夠過濾空元素與啓動{}。但仍然看到[]。

+1

換句話說:要刪除*空元素*? – deceze

+0

是的,我想刪除空的元素。我不知道它爲什麼會來,但當我想查詢它時,我不想要空元素。 –

+3

真正的問題是:爲什麼你有時插入一個空的JSON對象,有時候是空的JSON _array_。 –

回答

2

非常簡單,只需選擇不包含這些值的所有行:

SELECT * 
FROM tableA 
WHERE json :: text NOT IN ('{}', '[]')