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 DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []));

Пример 05: Премахване на дубликати при използване на клауза ORDER BY

Можете също така да премахнете дублиращите се стойности от масива с плаващ тип, както е показано по-долу. Заедно с отделната заявка ще използваме клаузата ORDER BY, за да получим резултата в реда за сортиране на конкретна стойност. Опитайте посочената по-долу заявка в обвивката на командния ред, за да го направите.

>> ИЗБЕРЕТЕ РАЗЛИЧНО ОТГЛЕЖДАНЕ ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) ПОРЪЧКА ПО 1;

Първо, масивът е преобразуван в редове с помощта на функцията UNNEST; след това тези редове ще бъдат сортирани във възходящ ред, като се използва клаузата ORDER BY, както е показано по-долу.

За да конвертирате редовете отново в масив, използвайте същата заявка SELECT в черупката, докато я използвате с малка азбучна функция array (). Можете да хвърлите един поглед на изхода по-долу, че масивът е преобразуван първо в редове, след което са избрани само отделните стойности. Най-накрая редовете отново ще бъдат преобразувани в масив.

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

Заключение:

И накрая, успешно сте приложили всеки пример от това ръководство. Надяваме се, че нямате никакъв проблем, докато изпълнявате метода UNNEST (), DISTINCT и array () в примерите.

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...