在postgres中搜索一個嵌套的jsonb列時,我們可以像這樣做一個全文搜索:
SELECT * FROM search_test u
WHERE items @? '$.** ? (@ like_regex "35" flag "i")'。
這將回傳表中所有在專案jsonb列中含有 "35 "字串值的行。
但是,我們如何在這個查詢中包括數字資料型別?例如,如果items列有這樣的值:
我們如何在這個查詢中包括數字資料型別?
{"id": "15351", "nid": 15751 }
我們如何在查詢中包含數字資料型別,以便我們能從中得到一個結果:
我們如何在查詢中包含數字資料型別?
SELECT * FROM search_test u
WHERE items @? '$.** ? (@ like_regex "75" flag "i")'。
我試著尋找鑄造選項,但到目前為止,我發現的唯一解決方案是創建一個額外的列,將數字值存盤為字串,然后搜索兩列。
這里有一個示例的fiddle。 https://dbfiddle.uk/?rdbms=postgres_13&fiddle=e5929ddbcf69ae3704da932b61a7d153
uj5u.com熱心網友回復:
你需要提取所有的鍵/值對,然后使用EXISTS條件對每個值應用LIKE條件:
select s.*
from search_test s.
where exists (select *)
from jsonb_each_text(s.items) as x(k,v)
where x.v like '5%')。)
uj5u.com熱心網友回復:
這就是你要找的東西嗎?
SELECT *
FROM search_test u
WHERE items::text like 'u%'/span>;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324733.html
標籤:
