首页 > 解决方案 > Postgres 字符串数组比较

问题描述

我有一个形式的数组:

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

我的表有一个列,它的构造与数组完全一样,由一个字符串数组组成,我们称之为列:myColumn。

我想输出数组的一个或多个值匹配的行。

我目前的尝试如下:

SELECT *
FROM myTable
WHERE myColumn && myArray;

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

ERROR: Column "56" does not exist.

标签: arrayspostgresql

解决方案


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

所以当你写

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

PostgreSQL 将识别"56"为列名(在该上下文中它不能是表),并且它抱怨该表mytable没有名为56.

解决方法是标记56字符串字面量,即用单引号括起来

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

推荐阅读