11 postgresql json jsonb
我有以下jsonb结构:
{'this': '1', 'this_that': '0', 'this_and_that': '5'}
Run Code Online (Sandbox Code Playgroud)
如何选择包含LIKE运算符的行?
SELECT * FROM myjson WHERE j ? 'this_%'
Run Code Online (Sandbox Code Playgroud)
返回0行...希望它匹配'this_that'和'this_and_that'.(注意:'_'后面的字符可能会有很大差异,因此我无法完全匹配).
Pav*_*ule 14
您的示例不应该起作用,因为在jsonb和text类型之间没有隐式转换.你可以强制执行:
SELECT '{"this": 1, "this_that": 0, "this_and_that": 5}'::jsonb::text
like '%"this%';
Run Code Online (Sandbox Code Playgroud)
这不是干净的解决方案.更好的是解压缩json,并使用横向连接过滤解压缩的数据
postgres=# SELECT key FROM myjson, lateral jsonb_each_text(j)
WHERE key LIKE 'this\_%';
?????????????????
? key ?
?????????????????
? this_that ?
? this_and_that ?
?????????????????
(2 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |