Wprowadzenie

Podczas pracy z danymi przechowywanymi w PostgreSQL mogą pojawić się dane, które wolisz traktować jako inny typ danych. Na przykład, możesz mieć wartość tekstową, która reprezentuje liczbę, taką jak „53”. Aby wykonać obliczenia na tej wartości, sensowniejsze może być przekonwertowanie jej na liczbę całkowitą. W Postgres funkcja CAST jest używana do konwersji typu danych wartości na inny typ danych. Wartość musi być zgodna z docelowym typem danych, w przeciwnym razie zostanie zwrócony błąd. W tym artykule pokażemy, jak korzystać z funkcji PostgreSQL CAST oraz omówimy kilka przykładów różnych konwersji.

Warunki wstępne

Przed przystąpieniem do pracy z tym samouczkiem należy spełnić dwa kluczowe warunki wstępne:

  • Na komputerze musi być zainstalowany i skonfigurowany serwer PostgreSQL.
  • Musisz posiadać podstawową wiedzę na temat PostgreSQL.

Funkcja CAST w PostgreSQL

W PostgreSQL istnieją dwa sposoby CASTpodania wartości. W pierwszym przypadku określamy wartość oraz docelowy typ danych wewnątrz nawiasów funkcji CAST. Składnia jest przedstawiona poniżej:

1
SELECT CAST ( VALUE AS TYPE )

Innym sposobem rzutowania wartości jest użycie notacji :: pomiędzy wartością a docelowym typem danych. Możesz zobaczyć składnię poniżej:

1
SELECT VALUE::TYPE

W tej składni, value reprezentuje wartość, którą chcesz rzucić lub zmienić typ danych.type reprezentuje typ danych, do którego dążysz dla tej wartości; kilka możliwych wartości type obejmuje INTEGER, FLOAT i CHAR.

Postgres CAST Przykład

Przyjrzyjrzyjmy się kilku przykładom użycia funkcji Postgres CAST.

Postgres CAST to String

Dla naszego pierwszego przykładu, będziemy rzutować wartość jako wartość łańcuchową. Możemy zobaczyć, jak to się robi w następującej SELECT instrukcji:

1
2
3
4
5
SELECT CAST( 5137 AS TEXT );
text
——
5137
(1 ROW)

Postgres CAST to Integer

Następnie przekonwertujemy wartość o typie tekstowym na liczbę całkowitą. Poniższa instrukcja pokazuje jak to zrobić:

1
2
3
4
5
SELECT CAST( '214′ AS INTEGER );
int4
——
214
(1 ROW)

W przedstawionym poniżej przykładzie będziemy rzutować wartość całkowitą na typ danych MONEY. Możemy zobaczyć, jak to działa w następującej instrukcji:

1
2
3
4
5
SELECT CAST(7419 AS MONEY);
money
———–
$7,419.00
(1 ROW)

Postgres CAST to Interval

Nasz kolejny przykład rzutuje wartość tekstową na typ danych INTERVAL. Poniższa instrukcja SELECT pokazuje jak to działa:

1
2
3
4
5
SELECT CAST (’1 year 2 months 7 days’ AS INTERVAL);
INTERVAL
———————-
1 YEAR 2 mons 7 days
(1 ROW)

Postgres CAST to Date

Możemy również użyć funkcji CAST do przekonwertowania wartości tekstowej na typ danych DATE, jak widać na poniższym przykładzie:

1
2
3
4
5
SELECT CAST( 'July 24, 1999′ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Jest jeszcze jeden sposób na CASTtekst jako datę:

1
2
3
4
5
SELECT CAST( ’24-07-99′ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Postgres CAST With Trim

W przedstawionym poniżej przykładzie przytniemy wartość tekstową, a następnie rzucimy wynik, który zostanie zwrócony z TRIM:

1
2
3
4
5
SELECT CAST( TRIM( LEADING 'DATE ’ FROM 'DATE January 28, 1998′ ) AS DATE);
ltrim
————
1998-01-28
(1 ROW)

Postgres CAST With Concatenation

Możemy konkatenować dwa lub więcej ciągów znaków za pomocą operatora ||. W naszym ostatnim przykładzie, będziemy konkatenować wartość łańcuchową z wartością daty, która jest rzutowana na TEXT. Poniższa instrukcja pokazuje, jak to zrobić:

1
2
3
4
5
SELECT 'The current date is ’ || CAST( CURRENT_DATE AS TEXT );
?COLUMN?
——————————–
The CURRENT DATE IS 2020-03-28
(1 ROW)

Wnioski

Podczas wykonywania zapytań do danych w PostgreSQL, możesz chcieć, aby wartości niektórych kolumn zostały przekonwertowane na inny typ danych. Zmiana typu danych może ułatwić wykonywanie obliczeń i operacji przetwarzania na zwróconych danych. W tym artykule pokazaliśmy, jak używać funkcji Postgres CAST do konwersji typu danych wartości. Jeśli prześledziłeś wszystkie przykłady przedstawione w tym artykule, będziesz w stanie efektywnie wykorzystywać funkcję CAST w swoich własnych zapytaniach PostgreSQL.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.