2017-08-07 79 views
0

我需要創建一個查詢來搜索JSON的所有屬性值。表中的用POSTGRESQL 9.5在JSON中搜索

實施例:

ID --- ObjectType --- JSON 
1  Client  {"name":"John","age":27} 
2  Contact  {"contact_name":"Henry","contact_city":"New York"} 

每個這些JSON格式是在同一個表中。

舉例來說,在我的應用程序,如果我在搜索文本框中寫入「27」,查詢將搜索所有的JSON值(而不是屬性)術語「27」。

如果我在搜索文本框中輸入「contact_name」,我就沒有結果。

我設法創造SQLSERVER 2016

此查詢是查詢:

我需要做的是相同的,或者以另一種方式,在PostgreSQL

回答

0

的一種方法是使用json_each_text功能

select ObjectTeepee.* from ObjectTeepee 
join lateral json_each_text(JSON) j 
on true 
where 
j.value = '27' 
+0

只要注意:橫向連接不需要語句'on true'以及'join'也是可選的。你可以寫同樣的東西,例如'...從objectteepee t,json_each_text(previewcontent)j WHERE j.value ='27''。 –

+0

@KristoMägi - 是的,我只是喜歡那種風格。 –

0

您可以做類似這個:

SELECT * 
FROM ObjectTeepee 
WHERE EXISTS (
    SELECT * FROM jsonb_each(previewContent) WHERE value='27' 
)