Чтобы полностью проработать эту концепцию, откройте установленную оболочку командной строки 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 () в примерах.