PostgreSql. Поиск значения в массиве
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Поиск значений в массиве (array). База данных postgresql.
На самом деле найти значения в массиве не так сложно. И в этой публикации мы разберем как это сделать.
Представим ситуацию, что у нас есть офисные сотрудники, которые заработали за месяц какую то сумму денег.
Кто-то зарабатывал чаще, а кто-то больше, но это не важно.
Приступим к формированию таблицы: создадим таблицу с именами пользователей в одной колонке и во второй колонке будут содержаться все их заработки в массиве.
Запрос на создание такой таблицы будет выглядеть так:
CREATE TABLE users (
name text,
sum integer[]
);
- name - колонка с типом text
- sum - колонка с суммами заработка. Тип поля integer. После указания типа указаны квадратные скобки ([]), которые говорят о том, что данное поля является массивом.
После выполнения запроса будет создана таблица users.
Заполним ее произвольными данными:
INSERT INTO users VALUES ('Антон', '{12345, 44454, 4578779, 787885, 67576, 58875263}');
INSERT INTO users VALUES ('Кирилл', '{42342, 57475373, 3453232, 2342586, 546457, 456546}');
INSERT INTO users VALUES ('Артур', '{67575, 67575, 67575, 67575, 67575, 67575}');
INSERT INTO users VALUES ('Дмитрий', '{67575, 456546, 3543, 3256456, 35436456, 23536574}');
INSERT INTO users VALUES ('Вячеслав', '{67575, 34534534, 45645645, 3256456, 35436456, 5464574}');
INSERT INTO users VALUES ('Юрий', '{34534534, 4363463, 3543, 54645654, 436456, 675758}');
Приступим к поиску значения в массиве.
- Поиск значения в указанном элементе массива
Запрос, который позволяет найти и вывести все строки, где в первых четырех элементах встречаются указанные значения:SELECT * FROM users WHERE sum[1] = 67575 OR sum[2] = 67575 OR sum[3] = 67575 OR sum[4] = 54645654;
Результат: - Поиск значения в массиве
Ищем значение 67575 в колонке (sum), которая представляет из себя массив.
Поиск в массиве осуществляется благодаря методу ANY.SELECT * FROM users where 67575 = any(sum);
Результат: - Вывод строк, в которых все значения массива равны указанному значению
Поиск строк, в которых массивы содержат только значения, равные 67575.
Данный тип поиска можно выполнить при использовании функции ALL.SELECT * FROM users WHERE 67575 = ALL (sum);
Результат: - Поиск строк, где хотя бы одно значение массива встречается в другом массиве.
Данный вид поиска осуществляется при помощи оператора &&, который проверяет пересекаются ли элементы первого массива со вторым массивом.
В примере это массив ARRAY[5464574, 35436456, 4578779, 3256456] и поле sum.SELECT * FROM users WHERE sum && ARRAY[5464574, 35436456, 4578779, 3256456];
Результат:Другие типы операторов вы можете посмотреть на официальном сайте postgres.
Комментариев 3
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.