如何将一堆用逗号分隔的字符串与Postgres中的无序字符串输入进行比较
Posted
技术标签:
【中文标题】如何将一堆用逗号分隔的字符串与Postgres中的无序字符串输入进行比较【英文标题】:How to compare a bunch of strings separated by coma with unorder string input in Postgres 【发布时间】:2018-12-06 06:45:45 【问题描述】:catalog
----------------------------------
id title keywords
----------------------------------
1 Title-1 k2,k1,k3,k4,k5
2 Title-2 k1,k3,k5,k6
如何通过比较关键字与我的输入k1,k2,k5
来选择行
在上面的例子中,id 为 1 的行必须出现。
【问题讨论】:
【参考方案1】:我会将keywords
列和输入都转换为数组,然后使用@>
运算符检查前者是否包含后者:
SELECT *
FROM catalog
WHERE STRING_TO_ARRAY(keywords, ',') @> STRING_TO_ARRAY('k1,k2,k5', ',')
DBFiddle
【讨论】:
这种是两个数组的交集吗? @Hearaman 不完全是。@>
运算符表示“左侧参数是否包含右侧参数的所有元素。还有一个 &&
运算符表示“两个参数之间是否有任何交集”,但这会返回两行,这它们和您提供的参数都包含“k1”。以上是关于如何将一堆用逗号分隔的字符串与Postgres中的无序字符串输入进行比较的主要内容,如果未能解决你的问题,请参考以下文章
将一张excel表中的数据全部粘贴到txt文本文件中,如何做