Postgres字符串数组比较

时间:2020-06-21 11:49:22

标签: arrays postgresql

我有一个以下形式的数组:

myArray = ["1234-56", "1234-567"]

我的表有一列,其结构与数组完全相同,并且由字符串数组组成,我们将其称为myColumn。

我要输出行,其中数组的一个或多个值匹配。

我目前的尝试是:

SELECT *
FROM myTable
WHERE myColumn && myArray;

但这以以下错误消息结尾:

ERROR: Column "56" does not exist.

1 个答案:

答案 0 :(得分:1)

用双引号引起来的字符串是SQL中的“标识符”,即表,列,函数或其他对象的名称。

所以当你写

SELECT * FROM mytable
WHERE mycolumn && ARRAY["56","95"];

PostgreSQL将"56"标识为列名(在这种情况下它不能是表),并且它抱怨表mytable没有名为56的列。

解决方案是将56标记为字符串文字,即用单引号将其包围:

SELECT * FROM mytable
WHERE mycolumn && ARRAY['56','95'];