【发布时间】:2021-09-25 15:44:38
【问题描述】:
我有一个帖子,每个帖子都有标签(varchar []),我正在尝试根据标签找到相关的。这就是为什么我要检查目标帖子的所有标签或其任何子集是否包含在其他帖子的“标签”数组中。
我检查了几个来源:
Postgres: check if array field contains value?
https://www.postgresql.org/docs/9.1/functions-array.html
根据他们的说法,@> 应该适合这种情况,但两者都不适合
select * from posts where tags @> '{"California", "K-8"}';
也没有
select * from posts where tags @> array['California', 'K-8']::varchar[];
正常工作:当我有两个带有标签的帖子时,我得到了一个空结果:
{'California','K-8','Legislation','AB77'}, {'California','K-8','Tips & Tricks'}
如果有人能建议解决这个问题,我将不胜感激:-)
编辑:我已经弄清楚出了什么问题 - 问题在于存储数据的格式:在我改变之后
{'California','K-8','Tips & Tricks'}
到
{California,K-8,"Tips & Tricks"}
在 pgAdmin 中一切都开始正常工作了。
【问题讨论】:
-
db-fiddle.com/f/d6kKrov5orrPHf3KR1zi81/1 似乎在这里工作正常。你能发布一些你的数据吗?
-
'目标帖子的所有标签或其任何子集都包含在'中。空数组不是每个数组的子集吗?或者如果你任意排除它,那么这听起来更像是重叠
&&而不是包含。 -
不要编辑问题来添加答案。回答你自己的问题。这更好理解,人们可能会相信你的回答。
标签: postgresql