PostgreSQL

Przykłady UNNEST PostgreSQL

Przykłady UNNEST PostgreSQL
Możesz określić kolumnę w PostgreSQL jako tablicę odpowiednich typów danych. Wbudowane, określone przez użytkownika i niezbywalne typy danych to wszystkie możliwości. Poza tym tablice są bardzo istotne w PostgreSQL. Dowiedziałeś się już o tablicach w PostgreSQL, w tym o tym, jak konstruować, odpytywać, a czasem nawet generować tablice za pomocą metody ARRAY. Jednak są chwile, kiedy chciałbym zrobić coś odwrotnego i przekonwertować tablicę PostgreSQL na wiersze. Jest wiele powodów, dla których chciałbyś to zrobić. Przez chwilę załóżmy, że szukasz połączenia dwóch tablic. W PostgreSQL operator INTERSECT może skutecznie to zrobić dla dwóch różnych zestawów wierszy. Nie ma jednak odpowiednika dla tablic. Podobnie operator UNION łączy 2 pary wierszy; jednak nie ma nic porównywalnego dla tablic. Sekretem tego wszystkiego wydaje się być metoda UNNEST. Korzystając z UNNEST, musisz zachować ostrożność, ponieważ (jak w przypadku większości systemów komputerowych) PostgreSQL zrobi wszystko, co mu polecisz, a nie dokładnie to, co chcesz, aby zrobił.

Aby w pełni rozwinąć tę koncepcję, otwórz zainstalowaną powłokę wiersza poleceń PostgreSQL w swoim systemie. Podaj nazwę serwera, nazwę bazy danych, numer portu, nazwę użytkownika i hasło dla konkretnego użytkownika, jeśli nie chcesz rozpoczynać pracy z opcjami domyślnymi. Jeśli chcesz pracować z domyślnymi parametrami, pozostaw każdą opcję pustą i naciśnij Enter dla każdej opcji. Teraz powłoka wiersza poleceń jest gotowa do pracy.

Przykład 01: Zdefiniuj dane typu tablicy

Dobrym pomysłem jest zapoznanie się z podstawami przed przejściem do modyfikowania wartości tablicowych w bazie danych. Oto sposób na określenie listy typów tekstu. Możesz zobaczyć, że wynik pokazał listę typów tekstu za pomocą klauzuli SELECT.

>> SELECT 'Aqsa, Raza, Saeed'::tekst[];

Typ danych należy określić podczas pisania zapytania. PostgreSQL nie rozpozna typu danych, jeśli wydaje się być ciągiem. Alternatywnie możemy użyć formatu ARRAY[], aby określić go jako typ ciągu, jak pokazano poniżej w zapytaniu. Z danych wyjściowych cytowanych poniżej widać, że dane zostały pobrane jako typ tablicy przy użyciu zapytania SELECT.

>> WYBIERZ TABLICA['Aqsa', 'Raza', 'Saeed'];

Wybranie tych samych danych tablicowych za pomocą zapytania SELECT podczas korzystania z klauzuli FROM nie działa tak, jak powinno. Na przykład wypróbuj poniższe zapytanie klauzuli FROM w powłoce. Sprawdzisz, czy wyjdzie błąd. Dzieje się tak ponieważ klauzula SELECT FROM zakładaże dane które sąpobierane prawdopodobnie sągrupąwierszy lub niektórymi punktami z tabeli.

>> WYBIERZ * Z TABLICY ['Aqsa', 'Raza', 'Saeed'];

Przykład 02: Konwersja tablicy na wiersze

ARRAY[] to funkcja, która zwraca niepodzielną wartość. W rezultacie pasuje tylko do klauzuli SELECT, a nie do klauzuli FROM, ponieważ nasze dane nie były w formie „wierszowej”. Dlatego w powyższym przykładzie pojawił się błąd. Oto jak użyć funkcji UNNEST, aby przekonwertować tablice na wiersze, gdy zapytanie nie działa z klauzulą.

>> WYBIERZ ROZGRZANIE (TABLICA['Aqsa', 'Raza', 'Saeed']);

Przykład 03: Konwersja wierszy na tablicę Ar

Aby ponownie przekonwertować wiersze na tablicę, musimy zdefiniować to konkretne zapytanie w zapytaniu, aby to zrobić. Musisz użyć dwóch zapytań SELECT tutaj. Wewnętrzne zapytanie wybierające konwertuje tablicę na wiersze za pomocą funkcji UNNEST. Podczas gdy zewnętrzne zapytanie SELECT ponownie przekształca wszystkie te wiersze w jedną tablicę, jak pokazano na poniższym obrazku. Uważaj; musisz użyć mniejszej pisowni słowa 'array' w zewnętrznym zapytaniu SELECT.

>> SELECT array(SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Przykład 04: Usuń duplikaty za pomocą klauzuli DISTINCT

DISTINCT może pomóc Ci wyodrębnić duplikaty z dowolnej formy danych. Jednak koniecznie wymaga użycia wierszy jako danych. Oznacza to, że ta metoda działa w przypadku liczb całkowitych, tekstu, zmiennoprzecinkowych i innych typów danych, ale tablice nie są dozwolone. Aby usunąć duplikaty, musisz najpierw przekonwertować dane typu tablicy na wiersze za pomocą metody UNNEST. Następnie te przekonwertowane wiersze danych zostaną przekazane do klauzuli DISTINCT. Możesz rzucić okiem na wynik poniżej, że tablica została przekonwertowana na wiersze, a następnie tylko odrębne wartości z tych wierszy zostały pobrane za pomocą klauzuli DISTINCT.

>> SELECT DISTINCT UNNEST( 'Aqsa, Raza, Saeed, Raza, Uzma, Aqsa'::text[]);

Jeśli potrzebujesz tablicy jako wyniku, użyj funkcji array() w pierwszym zapytaniu SELECT i użyj klauzuli DISTINCT w następnym zapytaniu SELECT. Z wyświetlanego obrazu widać, że dane wyjściowe zostały pokazane w formie tablicy, a nie w wierszu. Podczas gdy dane wyjściowe zawierają tylko różne wartości.

>> SELECT array( SELECT DISTINCT UNNEST('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa'::text[]));

Przykład 05: Usuń duplikaty przy użyciu klauzuli ORDER BY

Możesz także usunąć zduplikowane wartości z tablicy typu float, jak pokazano poniżej. Wraz z odrębnym zapytaniem będziemy używać klauzuli ORDER BY, aby uzyskać wynik w kolejności sortowania określonej wartości. Aby to zrobić, wypróbuj poniższe zapytanie w powłoce wiersza poleceń.

>> WYBIERZ RÓŻNE ROZBIJANIE( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ) ZAMÓW WEDŁUG 1;

Najpierw tablica została przekonwertowana na wiersze za pomocą funkcji UNNEST; następnie te wiersze zostaną posortowane w porządku rosnącym za pomocą klauzuli ORDER BY, jak pokazano poniżej.

Aby ponownie przekonwertować wiersze na tablicę, użyj tego samego zapytania SELECT w powłoce, używając go z małą alfabetyczną funkcją array(). Możesz rzucić okiem na poniższy wynik, że tablica została najpierw przekonwertowana na wiersze, a następnie wybrane zostały tylko odrębne wartości. W końcu wiersze zostaną ponownie przekonwertowane na tablicę.

>> SELECT array( SELECT DISTINCT UNNEST( '2,85, 2 .).73, 2.85, 1.8, 2.73'::float[] ));

Wniosek:

Wreszcie pomyślnie zaimplementowałeś każdy przykład z tego przewodnika. Mamy nadzieję, że nie masz żadnych problemów podczas wykonywania metod UNNEST(), DISTINCT i array() w przykładach.

How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Gry Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Ten artykuł zawiera listę darmowych i otwartych silników gier, których można używać do tworzenia gier 2D i 3D w systemie Linux. Istnieje wiele takich ...
Gry Samouczek Shadow of the Tomb Raider dla systemu Linux
Samouczek Shadow of the Tomb Raider dla systemu Linux
Shadow of the Tomb Raider to dwunasty dodatek do serii Tomb Raider - przygodowej serii gier akcji stworzonej przez Eidos Montreal. Gra została dość do...