PostgreSQL 如何查询字符串数组

San*_*ndy 7 sql arrays postgresql


我正在尝试编写一个查询来检查某个元素是否位于字符串数组中。

这是我的简单选择查询以及输出

select languages from person limit 3;
{CSS,HTML,Java,JavaScript,Python}
{JavaScript,Python,TensorFlow}
{C++,Python}
Run Code Online (Sandbox Code Playgroud)

如何编写查询来查找所有将“Java”列为他们知道的列出语言的人?
我尝试遵循语法,但它不起作用。

select languages from person where languages @> ARRAY['Java']::varchar[];
Run Code Online (Sandbox Code Playgroud)

小智 11

您需要在左侧使用字符串常量,并在数组列上使用 ANY 运算符:

select languages 
from person 
where 'Java' = any(languages);
Run Code Online (Sandbox Code Playgroud)

这假设languages定义为text[]varchar[]如您的示例输出所示