Для работы с массивами предусмотрено много различных функций и операто-
ров, представленных в разделе документации 9.18 «Функции и операторы для
работы с массивами». Самостоятельно ознакомьтесь с ними, используя описан-
ную технологию работы с командой SELECT.
33.* В разделе документации 8.15 «Массивы» сказано, что массивы могут быть мно-
гомерными и в них могут содержаться значения любых типов. Давайте сначала
рассмотрим одномерные массивы
текстовых
значений.
Предположим, что пилоты авиакомпании имеют возможность высказывать
свои пожелания насчет конкретных блюд, из которых должен состоять их обед
во время полета. Для учета пожеланий пилотов необходимо модифицировать
таблицу pilots, с которой мы работали в разделе 4.5.
CREATE TABLE pilots
( pilot_name text,
schedule integer[],
meal text[]
);
Добавим строки в таблицу:
INSERT INTO pilots
VALUES ( 'Ivan', '{ 1, 3, 5, 6, 7 }'::integer[],
'{ "сосиска", "макароны", "кофе" }'::text[] ),
( 'Petr', '{ 1, 2, 5, 7 }'::integer [],
'{ "котлета", "каша", "кофе" }'::text[] ),
( 'Pavel', '{ 2, 5 }'::integer[],
'{ "сосиска", "каша", "кофе" }'::text[] ),
( 'Boris', '{ 3, 5, 6 }'::integer[],
'{ "котлета", "каша", "чай" }'::text[] );
INSERT 0 4
Обратите внимание, что каждое из текстовых значений, включаемых в литерал
массива, заключается в двойные кавычки, а в качестве типа данных указывается
text[].
Вот что получилось:
SELECT * FROM pilots;
pilot_name | schedule
|
meal
------------+-------------+-------------------------
Ivan
| {1,3,5,6,7} | {сосиска,макароны,кофе}
Petr
| {1,2,5,7}
| {котлета,каша,кофе}
Pavel
| {2,5}
| {сосиска,каша,кофе}
Boris
| {3,5,6}
| {котлета,каша,чай}
(4 строки)
Давайте получим список пилотов, предпочитающих на обед сосиски:
Достарыңызбен бөлісу: