PostgreSQL

Примеры PostgreSQL UNNEST

Примеры PostgreSQL UNNEST
Вы можете указать столбец в PostgreSQL как просто массив соответствующих типов данных. Возможны встроенные, определяемые пользователем и неотъемлемые типы данных. Кроме того, в PostgreSQL очень актуальны массивы. Вы узнали о массивах в PostgreSQL, в том числе о том, как создавать, запрашивать, а иногда даже генерировать массивы с помощью метода ARRAY. Однако бывают случаи, когда я хочу сделать обратное и преобразовать массив PostgreSQL в строки. Есть много причин, по которым вы хотели бы это сделать. Предположим, вы ищете соединение двух массивов. В PostgreSQL оператор INTERSECT может эффективно делать это для двух разных наборов строк. Однако у массивов нет аналогов. Аналогичным образом оператор UNION объединяет 2 пары строк; однако для массивов нет ничего сопоставимого. Метод UNNEST, кажется, является секретом всего этого. При использовании UNNEST вы должны проявлять осторожность, поскольку (как и в большинстве компьютерных систем) PostgreSQL будет делать все, что вы ему прикажете, а не совсем то, что вы хотите.

Чтобы полностью проработать эту концепцию, откройте установленную оболочку командной строки PostgreSQL в вашей системе. Укажите имя сервера, имя базы данных, номер порта, имя пользователя и пароль для конкретного пользователя, если вы не хотите начинать работу с параметрами по умолчанию. Если вы хотите работать с параметрами по умолчанию, оставьте все параметры пустыми и нажмите Enter для каждого параметра. Теперь ваша оболочка командной строки готова к работе с.

Пример 01: определение данных типа массива

Перед тем, как переходить к изменению значений массива в базе данных, рекомендуется изучить основы. Вот способ указать список типов текста. Вы можете видеть, что вывод показывает список типов текста, используя предложение SELECT.

>> ВЫБЕРИТЕ 'Акса, Раза, Саид' :: текст [];

Тип данных должен быть определен при написании запроса. PostgreSQL не распознает тип данных, если он кажется строкой. В качестве альтернативы мы можем использовать формат ARRAY [], чтобы указать его как строковый тип, как показано ниже в запросе. Из приведенных ниже выходных данных видно, что данные были получены как тип массива с помощью запроса SELECT.

>> ВЫБЕРИТЕ МАССИВ ['Aqsa', 'Raza', 'Saeed'];

Когда вы выбираете те же данные массива с запросом SELECT при использовании предложения FROM, он работает не так, как должен. Например, попробуйте следующий запрос предложения FROM в оболочке. Вы проверите, что выдает ошибку. Это связано с тем, что предложение SELECT FROM предполагает, что данные, которые он извлекает, вероятно, являются группой строк или некоторыми точками из таблицы.

>> ВЫБРАТЬ * ИЗ МАССИВА ['Акса', 'Раза', 'Саид'];

Пример 02: преобразование массива в строки

ARRAY [] - это функция, которая возвращает атомарное значение. В результате он подходит только для SELECT, а не для предложения FROM, поскольку наши данные не были в форме 'строки'. Вот почему мы получили ошибку в приведенном выше примере. Вот как использовать функцию UNNEST для преобразования массивов в строки, пока ваш запрос не работает с предложением.

>> ВЫБРАТЬ UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);

Пример 03: преобразование строк в массив

Чтобы снова преобразовать строки в массив, мы должны определить этот конкретный запрос в запросе, чтобы сделать это. Здесь вы должны использовать два запроса SELECT. Внутренний запрос выбора преобразует массив в строки с помощью функции UNNEST. В то время как внешний запрос SELECT снова преобразует все эти строки в единый массив, как показано на изображении, приведенном ниже. Осторожно; вы должны использовать меньшее написание слова «массив» во внешнем запросе SELECT.

>> SELECT массив (SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Пример 04: Удаление дубликатов с помощью предложения DISTINCT

DISTINCT может помочь вам извлечь дубликаты из любой формы данных. Однако это обязательно требует использования строк в качестве данных. Это означает, что этот метод работает с целыми числами, текстом, числами с плавающей запятой и другими типами данных, но массивы не допускаются. Чтобы удалить дубликаты, необходимо сначала преобразовать данные типа массива в строки с помощью метода UNNEST. После этого эти преобразованные строки данных будут переданы в предложение DISTINCT. Вы можете получить представление о выходе ниже, что массив был преобразован в строки, тогда с помощью предложения DISTINCT были извлечены только отдельные значения из этих строк.

>> ВЫБЕРИТЕ ОТЛИЧИТЕЛЬНУЮ НЕЗАВИСИМОСТЬ ('Акса, Раза, Саид, Раза, Узма, Акса' :: text []);

Если вам действительно нужен массив в качестве вывода, используйте функцию array () в первом запросе SELECT и используйте предложение DISTINCT в следующем запросе SELECT. По отображаемому изображению видно, что результат был показан в виде массива, а не в строке. Хотя вывод содержит только различные значения.

>> ВЫБРАТЬ массив (ВЫБРАТЬ РАЗЛИЧНОЕ НЕИЗВЕСТНОЕ ('Акса, Раза, Саид, Раза, Узма, Акса' :: текст []));

Пример 05: Удаление дубликатов при использовании предложения ORDER BY

Вы также можете удалить повторяющиеся значения из массива типов с плавающей запятой, как показано ниже. Наряду с отдельным запросом мы будем использовать предложение ORDER BY, чтобы получить результат в порядке сортировки определенного значения. Попробуйте выполнить указанный ниже запрос в оболочке командной строки, чтобы сделать это.

>> ВЫБРАТЬ ОТЛИЧИТЕЛЬНОЕ НЕИЗВЕСТНОЕ ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) ORDER BY 1;

Во-первых, массив был преобразован в строки с помощью функции UNNEST; затем эти строки будут отсортированы в порядке возрастания с помощью предложения ORDER BY, как показано ниже.

Чтобы снова преобразовать строки в массив, используйте тот же запрос SELECT в оболочке, используя его с небольшой функцией алфавитного array (). Вы можете взглянуть на вывод ниже, что сначала массив был преобразован в строки, а затем были выбраны только отдельные значения. Наконец, строки снова будут преобразованы в массив.

>> SELECT массив (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []));

Заключение:

Наконец, вы успешно реализовали все примеры из этого руководства. Мы надеемся, что у вас не возникло никаких проблем при выполнении методов UNNEST (), DISTINCT и array () в примерах.

Как изменить настройки мыши и сенсорной панели с помощью Xinput в Linux
Большинство дистрибутивов Linux по умолчанию поставляются с библиотекой libinput для обработки событий ввода в системе. Он может обрабатывать события ...
Переназначьте кнопки мыши по-разному для разных программ с помощью X-Mouse Button Control
Может быть, вам нужен инструмент, который мог бы изменять управление вашей мышью с каждым приложением, которое вы используете. В этом случае вы можете...
Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...