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。如果您使用的是数组,那么值得阅读答案中提到的文档。您可能不记得特定的语法。但你会模糊地意识到“嘿,博士后可能会这么做”,并且知道去哪里找。非常感谢,我现在就在上面。非常有用,接下来几天我有一些阅读材料:)