Samenvatting: in deze tutorial leert u hoe u de SQL Server CAST()
functie kunt gebruiken om een waarde of een expressie van het ene type naar het andere te converteren.
Inleiding tot de SQL Server CAST() functie
Laat ons de volgende query zien:
Code language: PHP (php)SELECT 1 + '1' AS result;
Het retourneert 2 als een getal:
result-----------2(1 row affected)
In dit statement converteert SQL Server impliciet de tekenreeks '1'
naar het getal 1
.
Wanneer u twee waarden met verschillende gegevenstypen gebruikt, zal SQL Server proberen het lagere gegevenstype te converteren naar het hogere voordat het de berekening kan uitvoeren. Dit staat bekend als een impliciete conversie in SQL Server.
In tegenstelling tot impliciete conversies zijn er expliciete conversies, waarbij u de functie CAST()
aanroept om een waarde van het ene type expliciet om te zetten in een ander:
Code language: PHP (php)SELECT 1 + CAST(1 AS INT) result;
De syntaxis van de CAST()
functie is als volgt:
Code language: CSS (css)CAST ( expression AS target_type )
In deze syntaxis:
-
expression
kan een letterlijke waarde zijn of een geldige expressie van elk type die zal worden geconverteerd. -
target_type
is het doelgegevenstype waarnaar u de expressie wilt converteren. Het omvatINT
BIT
SQL_VARIANT
, enz. Merk op dat het geen alias datatype kan zijn. -
length
is een optioneel geheel getal dat de lengte van het doeltype specificeert. Delength
staat standaard op 30.
De CAST()
functie retourneert de expressie die naar het doeltype is geconverteerd.
SQL Server CAST() functie voorbeelden
Laten we een paar voorbeelden nemen van het gebruik van de CAST()
functie.
A) De CAST() functie gebruiken om een decimaal getal om te zetten in een geheel getal
Dit voorbeeld gebruikt de CAST()
functie om het decimale getal 5.95
om te zetten in een geheel getal:
Code language: CSS (css)SELECT CAST(5.95 AS INT) result;
Hier is de uitvoer:
result-----------5(1 row affected)
B) De CAST()-functie gebruiken om een decimaal getal om te zetten naar een ander decimaal getal met een andere lengte
Het volgende voorbeeld gebruikt de CAST()
-functie om het decimale getal 5.95 om te zetten naar een ander decimaal getal met de lengte 5.95.95 naar een ander decimaal getal met de nulschaal:
Code language: CSS (css)SELECT CAST(5.95 AS DEC(3,0)) result;
De uitvoer ziet er als volgt uit:
result-------6
Wanneer u een waarde van de gegevenstypen op verschillende plaatsen converteert, zal SQL Server een afgekapt resultaat of een afgeronde waarde retourneren op basis van de volgende regels:
Van Gegevenstype Type | To Data Type | Behavior |
---|---|---|
numeriek | geld | Rond |
int | Kort | |
numeriek | geld | Rond |
int | Round | |
geld | numeriek | Round |
float | int | Truncate |
float | numeriek | Round |
float | datetime | Round |
datetime | int | Rond |
C) De CAST() functie gebruiken om een string naar een datetime waarde te converteren voorbeeld
Dit voorbeeld gebruikt de CAST()
functie om de string '2019-03-14'
naar een datetime te converteren:
Code language: PHP (php)SELECT CAST('2019-03-14' AS DATETIME) result;
De uitvoer is:
Code language: CSS (css)result-----------------------2019-03-14 00:00:00.000(1 row affected)
D) CAST() functie gebruiken met rekenkundige operatoren
We zullen de sales.orders
en sales.order_items
tabellen uit de voorbeelddatabase gebruiken voor de demonstratie:
Het volgende statement gebruikt de CAST()
functie om de maandelijkse verkopen in 2017 om te zetten naar gehele waarden.
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;
De volgende afbeelding toont de uitvoer:
In deze tutorial hebt u geleerd hoe u de SQL Server CAST()
functie kunt gebruiken om een waarde van het ene type naar het andere om te zetten.