Postgres извлечь массив из текста - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть следующий оператор postgresql:

SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') );

В основном у меня есть строка, которая содержит массив целых чисел, разделенных запятой, например: [1, 2, 3], и иногда этот массив также может быть пустым, например:[].Теперь я хочу написать запрос (как часть более крупного запроса), где я мог бы выяснить, соответствует ли элемент каким-либо целым числам в тексте.Например:

SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') ); -- Should return true
SELECT 1 = ANY( jsonb_array_elements_text('[]') ); -- should return false

Однако приведенный выше запрос завершается неудачно с сообщением об ошибке:

ERROR:  op ANY/ALL (array) requires array on right side
LINE 1: SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') );

Любая помощь, как я могу извлечь целочисленный массив из текста, чтобы я мог использоватьв состоянии соединения?

Я использую postgres 9.4, если это имеет значение.

1 Ответ

0 голосов
/ 14 ноября 2018

Я нашел это.Ответ:

SELECT 1 IN (SELECT json_array_elements('[2, 1, 3]')::text::int);
SELECT 1 IN (SELECT json_array_elements('[]')::text::int);
SELECT 1 IN (SELECT json_array_elements('[12, 10, 3]')::text::int);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...