Postgres Сравнение строковых массивов - PullRequest
0 голосов
/ 21 июня 2020

У меня есть массив в форме:

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

В моей таблице есть столбец, который построен точно так же, как массив и состоит из массива строк, мы называем столбец: myColumn.

Я хочу вывести строки, в которых совпадают одно или несколько значений массивов.

Моя текущая попытка была следующей:

SELECT *
FROM myTable
WHERE myColumn && myArray;

Но это заканчивается следующим сообщением об ошибке:

ERROR: Column "56" does not exist.

1 Ответ

1 голос
/ 21 июня 2020

Строка в двойных кавычках - это «идентификатор» в SQL, то есть имя таблицы, столбца, функции или другого объекта.

Итак, когда вы пишете

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

PostgreSQL идентифицирует "56" как имя столбца (это не может быть таблица в этом контексте) и жалуется, что таблица mytable не имеет столбца с именем 56.

решение состоит в том, чтобы пометить 56 как строковый литерал , то есть заключить его в одинарные кавычки :

SELECT * FROM mytable
WHERE mycolumn && ARRAY['56','95'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...