gpt4 book ai didi

postgresql - 按不区分大小写的值在 jsonb 文档数组中查找元素

转载 作者:行者123 更新时间:2023-11-29 14:13:23 25 4
gpt4 key购买 nike

假设我有一个 userinfo 表,其中 person 列包含以下 jsonb 对象:

{
"skills": [
{
"name": "php"
},
{
"name": "Python"
}
]
}

为了获得 Python 技能,我会编写以下查询

从用户信息中选择 *
where person -> 'skills' @> '[{"name":"Python"}]'

它运行良好,但如果将 '[{"name":"python"}]' 指定为小写,它不会返回我想要的内容。

我如何在那里编写不区分大小写的查询?

Postgre 版本是 11.2

最佳答案

当使用 exists 谓词取消嵌套时,您可以这样做:

select u.*
from userinfo u
where exists (select *
from jsonb_array_elements(u.person -> 'skills') as s(j)
-- make sure to only do this for rows that actually contain an array
where jsonb_typeof(u.person -> 'skills') = 'array'
and lower(s.j ->> 'name') = 'python');

在线示例:https://rextester.com/XKVUA73952

关于postgresql - 按不区分大小写的值在 jsonb 文档数组中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com