PostgreSQL

Приклади PostgreSQL UNNEST

Приклади PostgreSQL UNNEST
Ви можете вказати стовпець у PostgreSQL як просто масив відповідних типів даних. Вбудовані, визначені користувачем і невід’ємні типи даних - це всі можливості. Окрім цього, масиви дуже актуальні в PostgreSQL. Ви дізналися про масиви в PostgreSQL, зокрема про те, як створювати, запитувати, а іноді навіть генерувати масиви методом ARRAY. Однак бувають випадки, коли я хочу зробити зворотне і перетворити масив PostgreSQL у рядки. Є багато причин, чому ви хотіли б це зробити. На деякий час, припустимо, ви шукаєте стик двох масивів. У PostgreSQL оператор INTERSECT може ефективно це зробити для двох різних наборів рядків. Однак аналогів для масивів немає. Так само оператор UNION об'єднує 2 пари рядків; однак для масивів немає нічого порівнянного. Здається, метод UNNEST є секретом усього цього. Споживаючи UNNEST, ви повинні бути обережними, оскільки (як і у більшості комп’ютерних систем) PostgreSQL буде робити все, що вам доручать, не зовсім те, що ви хочете.

Щоб повністю розробити цю концепцію, відкрийте встановлену оболонку командного рядка PostgreSQL у вашій системі. Введіть ім’я сервера, ім’я бази даних, номер порту, ім’я користувача та пароль для конкретного користувача, якщо ви не хочете починати працювати з параметрами за замовчуванням. Якщо ви хочете працювати з параметрами за замовчуванням, залиште кожен параметр порожнім і натисніть клавішу Enter. Тепер ваша оболонка командного рядка готова до роботи.

Приклад 01: Визначення даних типу масиву

Це гарна ідея вивчити основи, перш ніж переходити до модифікації значень масиву в базі даних. Ось спосіб вказати список типів тексту. Ви можете бачити, що результат показує список типів тексту, використовуючи речення SELECT.

>> ВИБЕРІТЬ 'Aqsa, Raza, Saeed' :: text [];

Під час написання запиту необхідно визначити тип даних. PostgreSQL не розпізнає тип даних, якщо здається, що це рядок. Крім того, ми можемо використовувати формат ARRAY [], щоб вказати його як тип рядка, як показано нижче, доданий до запиту. З вихідних даних, наведених нижче, ви можете бачити, що дані були отримані як тип масиву за допомогою запиту SELECT.

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

Коли ви вибираєте ті самі дані масиву із запитом SELECT під час використання речення FROM, це працює не так, як слід. Наприклад, спробуйте подати нижче запит пропозиції FROM в оболонці. Ви перевірите, чи не з’явиться помилка. Це тому, що речення SELECT FROM передбачає, що дані, які він отримує, - це, мабуть, група рядків або деякі точки з таблиці.

>> ВИБЕРІТЬ * З МАСИВКИ ['Aqsa', 'Raza', 'Saeed'];

Приклад 02: Перетворення масиву в рядки

ARRAY [] - це функція, яка повертає атомне значення. Як результат, він підходить лише для пропозиції SELECT, а не для речення FROM, оскільки наші дані не були у формі "рядок". Ось чому ми отримали помилку у наведеному вище прикладі. Ось як використовувати функцію UNNEST для перетворення масивів у рядки, коли ваш запит не працює з реченням.

>> ВИБЕРІТЬ НЕГОСТ (ARRAY ['Aqsa', 'Raza', 'Saeed']);

Приклад 03: Перетворення рядків у масив

Щоб знову перетворити рядки в масив, для цього потрібно визначити конкретний запит у запиті. Тут потрібно використовувати два запити SELECT. Внутрішній запит вибору - це перетворення масиву в рядки за допомогою функції UNNEST. Поки зовнішній запит SELECT знову перетворює всі ці рядки в єдиний масив, як показано на зображенні, наведеному нижче. Стережись; вам потрібно використовувати менші орфографії "масиву" у зовнішньому запиті SELECT.

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

Приклад 04: Видалення дублікатів за допомогою пункту DISTINCT

DISTINCT може допомогти вам витягти дублікати з будь-якої форми даних. Однак це обов'язково вимагає використання рядків як даних. Це означає, що цей метод працює для цілих чисел, тексту, плаваючих та інших типів даних, але масиви заборонені. Щоб видалити дублікати, спочатку потрібно перетворити дані типу масиву в рядки методом UNNEST. Після цього ці перетворені рядки даних будуть передані в речення DISTINCT. Ви можете поглянути на вихідні дані, що масив перетворено в рядки, тоді лише різні значення з цих рядків були отримані за допомогою речення DISTINCT.

>> ВИБЕРІТЬ ВИЗНАЧЕННЕ НІСТ ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []);

Якщо вам потрібен масив як вихід, використовуйте функцію array () у першому запиті SELECT і використовуйте речення DISTINCT у наступному запиті SELECT. З відображеного зображення видно, що результат був показаний у формі масиву, а не в рядку. Тоді як вихідні дані містять лише різні значення.

>> SELECT масив (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []));

Приклад 05: Видалення дублікатів під час використання пункту ORDER BY

Ви також можете видалити повторювані значення з масиву типу float, як показано нижче. Разом з окремим запитом ми будемо використовувати речення ORDER BY, щоб отримати результат у порядку сортування певного значення. Спробуйте вказаний нижче запит у оболонці командного рядка, щоб зробити це.

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

По-перше, масив перетворено в рядки за допомогою функції UNNEST; тоді ці рядки будуть відсортовані за зростанням за допомогою речення ORDER BY, як показано нижче.

Щоб знову перетворити рядки в масив, використовуйте той самий запит SELECT у оболонці, використовуючи його з невеликою алфавітною функцією масиву (). Ви можете поглянути на вихідні дані, що масив спочатку перетворено в рядки, а потім вибрано лише окремі значення. Нарешті, рядки знову будуть перетворені в масив.

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

Висновок:

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

Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...
Найкращі лабораторні ігри Oculus App
Якщо ви є власником гарнітури Oculus, то вам потрібно дізнатися про бокове завантаження. Бокове завантаження - це процес встановлення негарнітного вмі...
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...