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.