Podsumowanie: W tym poradniku dowiesz się jak używać funkcji SQL Server CAST()
do konwersji wartości lub wyrażenia z jednego typu na inny.
Wprowadzenie do funkcji SQL Server CAST()
Zobaczmy następujące zapytanie:
Code language: PHP (php)SELECT 1 + '1' AS result;
Zwraca ono 2 jako liczbę:
result-----------2(1 row affected)
W tej instrukcji SQL Server niejawnie konwertuje ciąg znaków na liczbę 1
.
Gdy używasz dwóch wartości o różnych typach danych, SQL Server spróbuje przekonwertować niższy typ danych na wyższy, zanim będzie mógł przetworzyć obliczenia. Jest to znane jako konwersja niejawna w SQL Server.
W przeciwieństwie do konwersji niejawnych, mamy konwersje jawne, w których wywołujemy funkcję CAST()
, aby jawnie przekonwertować wartość jednego typu na inny:
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
Składnia funkcji CAST()
jest następująca:
Code language: CSS (css)CAST ( expression AS target_type )
W tej składni:
-
expression
może być wartością dosłowną lub poprawnym wyrażeniem dowolnego typu, które zostanie przekonwertowane. -
target_type
jest docelowym typem danych, na który chcesz przekonwertować wyrażenie. Obejmuje onINT
BIT
SQL_VARIANT
, itp. Zauważ, że nie może to być aliasowy typ danych. -
length
jest opcjonalną liczbą całkowitą, która określa długość typu docelowego. Domyślna wartośćlength
to 30.
Funkcja CAST()
zwraca wyrażenie przekonwertowane na docelowy typ danych.
Przykłady funkcji CAST() serweraSQL
Poznajmy kilka przykładów użycia funkcji CAST()
.
A) Użycie funkcji CAST() do konwersji liczby dziesiętnej na całkowitą przykład
Przykład ten wykorzystuje funkcję CAST()
do konwersji liczby dziesiętnej 5.95
na liczbę całkowitą:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
Tutaj dane wyjściowe:
result-----------5(1 row affected)
B) Użycie funkcji CAST() do konwersji liczby dziesiętnej na inną liczbę dziesiętną o innej długości
Następujący przykład wykorzystuje funkcję CAST()
do konwersji liczby dziesiętnej 5.95 na inną liczbę dziesiętną ze skalą zerową:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
Wyjście jest następujące:
result-------6
Podczas konwersji wartości typów danych w różnych miejscach, SQL Server zwróci obcięty wynik lub zaokrągloną wartość w oparciu o następujące zasady:
From Data. Type | To Data Type | Behavior |
---|---|---|
numeryczne | numeric | Round |
numeryczne | int | Truncate |
numeryczne | money | Round |
money | int | Round |
money | numeric | Round |
float | int | Truncate |
float | numeric | Round |
float | datetime | Round |
datetime | int | Round |
C) Użycie funkcji CAST() do konwersji ciągu znaków na wartość datetime przykład
Przykład ten wykorzystuje funkcję CAST()
do konwersji ciągu znaków '2019-03-14'
na wartość datetime:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
Wynikiem jest:
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) Użycie funkcji CAST() z operatorami arytmetycznymi
Do demonstracji wykorzystamy tabele sales.orders
oraz sales.order_items
z przykładowej bazy danych:
Poniższe zestawienie wykorzystuje funkcję CAST()
do konwersji miesięcznej sprzedaży w roku 2017 na wartości całkowite.
Code language: PHP (php)SELECT MONTH(order_date) month, CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amountFROM sales.orders o INNER JOIN sales.order_items i ON o.order_id = i.order_idWHERE YEAR(order_date) = 2017GROUP BY MONTH(order_date)ORDER BY month;
Następujący rysunek przedstawia dane wyjściowe:
W tym poradniku dowiedziałeś się, jak używać funkcji SQL Server CAST()
do konwersji wartości z jednego typu na inny.