2017-03-21 145 views
4

我有下表稱爲module_data。目前它有三行條目:Postgresql json like查詢

   id        data 
0ab5203b-9157-4934-8aba-1512afb0abd0 {"title":"Board of Supervisors Meeting","id":"1i3Ytw1mw98"} 
7ee33a18-63da-4432-8967-bde5a44347a0 {"title":"Board of Supervisors Meeting","id":"4-dNAg2mn6o"} 
8d71ca35-74eb-4751-b635-114bf04843f1 {"title":"COPD 101", "id":"l9O0jCR-sxg"} 

該數據是一個jsonb列。我試圖用像查詢數據列。像下面這樣:

SELECT * FROM module_data WHERE title LIKE '%Board%'; 

我一直在尋找jsonb的支持,似乎並沒有像運營商一樣。如果有人有任何建議。

+0

的'like'運營商存在,但一個'title'列呢不。它是'data'列的*屬性/屬性*,因此[你需要提取它的值](https://www.postgresql.org/docs/current/static/functions-json.html)到比較它:'data - >>'title''或'data#>> ARRAY ['title']' – pozs

回答

10

如果數據列是文本類型,然後在投用->>

select * from module_data where data::json->>'title' like '%Board%' 

如果它已經JSON:

select * from module_data where data->>'title' like '%Board%' 
+0

太棒了,謝謝。它是我第一次使用jsonb,所以我非常欣賞這個提示 – adviner

+2

提醒讀者:讀取參數以避免SQL注入。 – baijum