2017-09-01 913 views
3

我有一個postgres表中的jsonb列,名爲主題這是一個字符串的字面數組。一個例子記錄可能有這樣一個主題值:postgres jsonb列中的模糊字符串匹配

['healthcare', 'fitness', 'gains', 'doyouevenliftbro']

我需要找到在許多這個紀錄這將匹配%lift%

所有我發現在計算器和其他查詢pg文檔可以匹配doyouevenliftbro作爲一個完整的字符串,或者可以做一個正則表達式匹配,如果這是從json_to_recordset()或其他任何東西轉換,但然後他們繼續引用JSON內部的屬性,這沒有。希望它是簡單的語法,只是逃避我。謝謝!

回答

2

您可以使用json_array_elementsjson數組取消嵌套。一旦它成爲集合,您可以應用like運算符並將其置於子查詢中。

select * 
from your_table 
where exists (
    select * 
    from json_array_elements(your_table.topics::json) 
    where value::text like '%lift%' 
); 

編輯:完成更是直言,如果你只投全主題陣列文字和對陣是什麼?

select * 
from your_table 
where topics::text like '%lift%'; 
+0

這看起來很有希望 - 我會在今天嘗試並在我確認時更新。謝謝! – AlienWebguy