postgresql - 如何将 ts_query 与 ANY(anyarray)一起使用
问题描述
我目前在 PostgreSQL 中有一个查询,例如:
SELECT
name
FROM
ingredients
WHERE
name = ANY({"string value",tomato,other})
我的成分表只是一个名称列表:
name
----------
jalapeno
tomatoes
avocados
lime
我的问题是数组中的复数值与查询中的单个值不匹配。为了解决这个问题,我在tsvector
表格上创建了一个列:
name | tokens
---------------+--------------
jalapeno | 'jalapeno':1
tomatoes | 'tomato':1
avocados | 'avocado':1
lime | 'lime':1
我能够正确地从表中查询单个值,如下所示:
SELECT
name,
ts_rank_cd(tokens, plainto_tsquery('tomato'), 16) AS rank
FROM
ingredients
WHERE
tokens @@ plainto_tsquery('tomato')
ORDER BY
rank DESC;
但是,我需要从整个数组中查询值。该数组是从另一个函数生成的,因此我可以控制数组中每个项目的类型。
如何将@@
操作数与 一起使用ANY(anyarray)
?
解决方案
这应该是直截了当的:
WHERE tokens @@ ANY
(ARRAY[
plainto_tsquery('tomato'),
plainto_tsquery('celery'),
plainto_tsquery('vodka')
])
推荐阅读
- html - 用模板上的 CDN 替换供应商的文件是一种好习惯吗?
- c# - 读取数据集合
使用 C# 从 Dynamics CRM - sql - 比较具有最大值的列,并根据列名分配值
- apache - 无法使用 modsecurity 和核心规则集阻止暴力攻击的 IP 地址
- ip - 带有主动健康检查的 istio 负载均衡服务入口
- python - 将烧瓶压缩添加到 py2exe 可执行文件
- xaml - 创建 2 列 UPW ListView 的正确方法是什么?
- google-play - 如何使用 Google Play 回复评论 API 获取评论提交时间?
- postgresql - PostgreSQL 中 WHERE 子句中的可空布尔检查
- node.js - 如何解决使用 npm create-app-react 创建 React App 的错误