我有一个以下形式的数组:
myArray = ["1234-56", "1234-567"]
我的表有一列,其结构与数组完全相同,并且由字符串数组组成,我们将其称为myColumn。
我要输出行,其中数组的一个或多个值匹配。
我目前的尝试是:
SELECT *
FROM myTable
WHERE myColumn && myArray;
但这以以下错误消息结尾:
ERROR: Column "56" does not exist.
答案 0 :(得分:1)
用双引号引起来的字符串是SQL中的“标识符”,即表,列,函数或其他对象的名称。
所以当你写
SELECT * FROM mytable
WHERE mycolumn && ARRAY["56","95"];
PostgreSQL将"56"
标识为列名(在这种情况下它不能是表),并且它抱怨表mytable
没有名为56
的列。
解决方案是将56
标记为字符串文字,即用单引号将其包围:
SELECT * FROM mytable
WHERE mycolumn && ARRAY['56','95'];