Як зробити вибір за допомогою масиву, містить речення про значення в psql


96

У мене є стовпець arr типу array.

Мені потрібно отримати рядки, де arrстовпець містить значенняs

Цей запит:

SELECT * FROM table WHERE arr @> ARRAY['s']

дає помилку:

ПОМИЛКА: оператор не існує: символ змінюється [] @> текст []

Чому це не працює?

ps Я знаю про any()оператора, але чому це не @>працює?

Відповіді:



65

Зверніть увагу, що це також може працювати:

SELECT * FROM table WHERE s=ANY(array)

4
І це також перешкоджає мені від необхідності кидати на varchar, як у s @> ARRAY['constant'::varchar], коротше.
Ендрю Бекер,

Це не використовуватиме індекс GIN, тому я б його скористався. Виправте мене, якщо я помиляюся
GorillaApe

17
SELECT * FROM table WHERE arr && '{s}'::text[];

Порівняйте два масиви для утримання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.