SQL - 如果数组包含特定项,则过滤行

时间:2016-08-15 08:40:49

标签: sql postgresql

我有一张表letter_count看起来像这样:

count   letters
2   ["a","b"]
4   ["b","c"]
2   ["a"]
0   ["b"]
6   ["c"]
7   ["d"]

我希望只能查询包含特定字母的行。

我试过了:

SELECT * FROM letter_counter WHERE letters IN ('["a"]')

但它失败了。

这里的正确语法是什么?

2 个答案:

答案 0 :(得分:2)

尝试此选择:

SELECT * FROM letter_counter 
WHERE(case when position('a' in array_to_string(letters,',')) > 0 then true else false end)

答案 1 :(得分:0)

使用此:

SELECT * FROM letter_counter WHERE letters @> ARRAY['a']::varchar[]

或者您可以花5秒时间搜索Stack Overflow并使用this answer