Funkcja SQL Server CAST

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:

SELECT 1 + '1' AS result;
Code language: PHP (php)

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:

SELECT 1 + CAST(1 AS INT) result;
Code language: PHP (php)

Składnia funkcji CAST() jest następująca:

CAST ( expression AS target_type )
Code language: CSS (css)

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 on INTBITSQL_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ą:

SELECT CAST(5.95 AS INT) result;
Code language: CSS (css)

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ą:

SELECT CAST(5.95 AS DEC(3,0)) result;
Code language: CSS (css)

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:

SELECT CAST('2019-03-14' AS DATETIME) result;
Code language: PHP (php)

Wynikiem jest:

result-----------------------2019-03-14 00:00:00.000(1 row affected)
Code language: CSS (css)

D) Użycie funkcji CAST() z operatorami arytmetycznymi

Do demonstracji wykorzystamy tabele sales.orders oraz sales.order_items z przykładowej bazy danych:

Przykładowe tabele

Poniższe zestawienie wykorzystuje funkcję CAST() do konwersji miesięcznej sprzedaży w roku 2017 na wartości całkowite.

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;
Code language: PHP (php)

Następujący rysunek przedstawia dane wyjściowe:

Przykład funkcji SQL Server CAST

W tym poradniku dowiedziałeś się, jak używać funkcji SQL Server CAST() do konwersji wartości z jednego typu na inny.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *