我有下面的表名为module_data.目前它有三行条目:
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"}
Run Code Online (Sandbox Code Playgroud)
数据是jsonb列.我正在尝试使用like来查询数据列.类似于以下内容:
SELECT * FROM module_data WHERE title LIKE '%Board%';
Run Code Online (Sandbox Code Playgroud)
我一直在寻找jsonb支持,似乎没有像运营商那样.如果有人有任何建议.
Gur*_*ngh 56
如果数据列是文本类型,则使用->>强制转换:
select * from module_data where data::json->>'title' like '%Board%'
Run Code Online (Sandbox Code Playgroud)
如果它已经是json:
select * from module_data where data->>'title' like '%Board%'
Run Code Online (Sandbox Code Playgroud)
Dee*_*gal 32
我发现以下内容对于 jsonb 类型的列更直接、更容易:
select * from table_name
where
column_name::text like '%Something%'
Run Code Online (Sandbox Code Playgroud)
找到了一篇关于更多示例和实现的好文章:https : //www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/
希望能帮助到你!
nev*_*ter 10
对于找到此页面的其他人来说,另一种可能足够的选项是将列转换为文本类型。例如
select * from module_data where data::text like '%Board%'
Run Code Online (Sandbox Code Playgroud)
但请注意,这将搜索整个 json,并且只有在您可以保证其他字段不会出现问题时才应使用。
| 归档时间: |
|
| 查看次数: |
23674 次 |
| 最近记录: |