pgsql的包含查询
时间: 2023-08-20 11:07:52 浏览: 125
pgsql查询优化之模糊查询实例详解
包含查询是指在查询中查找包含指定字符串的记录。在pgsql中,可以使用LIKE运算符进行包含查询。例如,如果要查询resource_instance_id字段中包含字符串"abc"的记录,可以使用以下语句:
SELECT * FROM resource_job WHERE resource_instance_id LIKE '%abc%';
这将返回resource_instance_id字段中包含"abc"的所有记录。请注意,LIKE运算符使用通配符%来表示任意字符的任意数量。因此,'%abc%'表示在字符串的任意位置包含"abc"的记录。
引用\[2\]中提到了一个类似的场景,其中param字段是jsonb类型,需要查询包含某字符串的所有记录。在这种情况下,可以使用jsonb类型的操作符->>来访问jsonb字段的值,并使用LIKE运算符进行包含查询。例如,如果要查询param字段中resource_instance_id键对应的值包含字符串"abc"的记录,可以使用以下语句:
SELECT * FROM resource_job WHERE param->>'resource_instance_id' LIKE '%abc%';
这将返回param字段中resource_instance_id键对应的值包含"abc"的所有记录。
引用\[3\]中提到了另一种需求,即查找jsonb字段中出现多个特定字符串的数据。在这种情况下,可以使用字符串函数和操作符来实现。例如,如果要查找jsonb字段中出现多个"517"的数据,可以使用以下语句:
SELECT * FROM schema.table WHERE length(jsonb::text) - length(replace(jsonb::text, '"517"', '')) > 5;
这将返回jsonb字段中包含多个"517"的所有记录。请注意,这里使用了字符串函数length和replace来计算jsonb字段中"517"的数量,并通过比较判断是否大于5来确定是否包含多个"517"。
总结起来,pgsql中的包含查询可以使用LIKE运算符进行普通字段的包含查询,对于jsonb字段,可以使用->>操作符和字符串函数来实现包含查询的需求。
#### 引用[.reference_title]
- *1* *2* [pgsql jsonb数组包含](https://blog.csdn.net/wujian_csdn_csdn/article/details/119209103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [pgsql查询jsonb中包含某个key的数量](https://blog.csdn.net/gouA1270497/article/details/124633858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文