PostgreSQL: работа с массивом - PullRequest
       1

PostgreSQL: работа с массивом

0 голосов
/ 21 сентября 2018

У меня есть столбец available_sizes в таблице PostgreSQL с массивом типов: text []

select available_sizes from products;

 {37,38,39,40}
...

Иногда мне нужно проверить, какие строки содержат определенные значения, например, 39 и 40, поэтому я попытался сделатьэто так:

select * 
from products 
where available_sizes && ('{39, 40}');

Возвращает строки, содержащие 39 или 40

select * 
from products 
where available_sizes = ANY ('{41, 42}');

Возвращает ошибку: «не удалось найти тип массива для типа данных text []»

Как бы вы решили это, пожалуйста?Извините, не эксперт по SQL / PostgreSQL

1 Ответ

0 голосов
/ 21 сентября 2018

&& - это оператор "перекрытия", который описан как"имеет общие элементы"

. Вам нужен оператор "содержит" @>, который проверяетесли все элементы массива справа содержатся в массиве слева:

select * 
from products 
where available_sizes @> ('{39, 40}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...