Podsumowanie: W tym tutorialu pokażemy, jak używać operatora PostgreSQL CAST do konwersji wartości jednego typu na inny.

Wprowadzenie do operatora PostgreSQL CAST

W wielu przypadkach chcemy przekonwertować wartość jednego typu danych na inny. PostgreSQL udostępnia operator CAST, który pozwala to zrobić.

Poniżej przedstawiono składnię operatora CAST:

Code language: SQL (Structured Query Language) (sql)

W tej składni:

  • Najpierw określ wyrażenie, które może być stałą, kolumną tabeli lub wyrażeniem obliczanym jako wartość.
  • Następnie określ docelowy typ danych, na który chcesz przekonwertować wynik wyrażenia.

PostgreSQL rzutowanie typu :: operator

Poza składnią typu CAST możesz użyć następującej składni, aby przekonwertować wartość jednego typu na inny:

Code language: SQL (Structured Query Language) (sql)

Zobacz następujący przykład:

Code language: SQL (Structured Query Language) (sql)

Uwaga, że składnia cast z operatorem cast (::) jest specyficzna dla PostgreSQL i nie jest zgodna ze standardem SQL

PostgreSQL CAST przykłady

Poznajmy kilka przykładów użycia operatora CAST do konwersji wartości jednego typu na inny.

1) Przeliczanie łańcucha na liczbę całkowitą przykład

Następujące wyrażenie konwertuje stałą łańcuchową na liczbę całkowitą:

Code language: SQL (Structured Query Language) (sql)

Jeśli wyrażenie nie może zostać przekonwertowane na typ docelowy, PostgreSQL zgłosi błąd. Zobacz następujący przykład:

Code language: SQL (Structured Query Language) (sql)
Code language: PHP (php)

2) Przekształć ciąg znaków na datę przykład

Przykład ten wykorzystuje CAST do konwersji ciągu znaków na datę:

Code language: SQL (Structured Query Language) (sql)

Po pierwsze, przekonwertowaliśmy 2015-01-01 ciąg znaków na January 1st 2015. Po drugie, przekonwertowaliśmy 01-OCT-2015 na October 1st 2015.

3) Cast a string to a double example

W poniższym przykładzie próbujemy przekonwertować ciąg '10.2' na wartość podwójną:

Code language: SQL (Structured Query Language) (sql)

Whoops, dostaliśmy następujący komunikat o błędzie:

Code language: PHP (php)

Aby to naprawić, musisz użyć DOUBLE PRECISION zamiast DOUBLE w następujący sposób:

Code language: SQL (Structured Query Language) (sql)

4) Cast a string to a boolean example

Ten przykład używa CAST() do konwersji ciągu 'true’, 'T’ na true i 'false’, 'F’ na false:

Code language: SQL (Structured Query Language) (sql)

Here is the output:

5) Konwertowanie łańcucha na znacznik czasu przykład

Ten przykład wykorzystuje operator rzutowania (::) do konwersji łańcucha na znacznik czasu:

Code language: SQL (Structured Query Language) (sql)

6) Konwertowanie łańcucha na interwał przykład

Ten przykład wykorzystuje operator rzutowania do konwersji łańcucha na interwał:

Code language: SQL (Structured Query Language) (sql)

Oto dane wyjściowe:

7) Użycie operatora CAST z danymi tabeli przykład

Na początku utwórz tabelę ratings, która składa się z dwóch kolumn: id i rating. Typ danych kolumny rating to VARCHAR(1):

Code language: SQL (Structured Query Language) (sql)

Po drugie, wstaw kilka przykładowych danych do tabeli ratings.

Code language: SQL (Structured Query Language) (sql)

Ponieważ wymagania się zmieniają, używamy tej samej tabeli ratings do przechowywania ocen jako liczby np, 1, 2, 3 zamiast A, B i C:

Code language: SQL (Structured Query Language) (sql)

Więc tabela ratings przechowuje wartości mieszane, w tym numeryczne i łańcuchowe.

Code language: SQL (Structured Query Language) (sql)

Teraz musimy przekonwertować wszystkie wartości w kolumnie rating na liczby całkowite, wszystkie pozostałe oceny A, B, C będą wyświetlane jako zero. Aby to zrobić, używamy wyrażenia CASE z typem CAST, jak pokazano w poniższym zapytaniu:

Code language: SQL (Structured Query Language) (sql)

Wyrażenie CASE sprawdza ocenę, jeśli pasuje do wzorca liczby całkowitej, konwertuje ocenę na liczbę całkowitą, w przeciwnym razie zwraca 0.

W tym poradniku dowiedziałeś się, jak używać PostgreSQL CAST do konwersji wartości jednego typu na inny.

  • Czy ten poradnik był pomocny ?
  • TakNie

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.