SQL SELECT中带有INTERSECT的大小写
我有一个列为数组的表:SQL SELECT中带有INTERSECT的大小写,sql,postgresql,Sql,Postgresql,我有一个列为数组的表: id | name | keywords 1 | test | {1,2,4} 2 | t3st | {1} 3 | te5t | {3} 4 | t35t | {} 我想在SELECT请求中输入一列,告诉我数组是否与“关键字”列数组相交。例如,如果我查找关键字{2,3},我希望: id | name | keywords | match 1 | test | {1,2,4} | true 2 | t3st | {1} | false 3 |
id | name | keywords
1 | test | {1,2,4}
2 | t3st | {1}
3 | te5t | {3}
4 | t35t | {}
我想在SELECT请求中输入一列,告诉我数组是否与“关键字”列数组相交。例如,如果我查找关键字{2,3},我希望:
id | name | keywords | match
1 | test | {1,2,4} | true
2 | t3st | {1} | false
3 | te5t | {3} | true
4 | t35t | {} | false
我找到了“CASE”,它可以帮助我创建这个新列,但我很难使用“INTERSECT”,因为我想我可能需要检查intersection是否为NULL
任何帮助都会很好,谢谢:)该操作符是数组重叠操作符。您不需要case
表达式,只需使用:
select t.*, (keywords && :input_array) as match
from t;
该操作符是数组重叠操作符。您不需要case
表达式,只需使用:
select t.*, (keywords && :input_array) as match
from t;
这正是我想要的。我不认识这个操作符,谢谢你的提示,现在我想我有一些旧的查询需要优化…@DJ9114。如果您使用的是数组,那么值得阅读答案中提到的文档。您可能不记得特定的语法。但你会模糊地意识到“嘿,博士后可能会这么做”,并且知道去哪里找。非常感谢,我现在就在上面。非常有用,我这几天有一些阅读:)这正是我想要的。我不认识这个操作符,谢谢你的提示,现在我想我有一些旧的查询需要优化…@DJ9114。如果您使用的是数组,那么值得阅读答案中提到的文档。您可能不记得特定的语法。但你会模糊地意识到“嘿,博士后可能会这么做”,并且知道去哪里找。非常感谢,我现在就在上面。非常有用,接下来几天我有一些阅读材料:)