SQL Server CAST Functie

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:

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

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:

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

De syntaxis van de CAST() functie is als volgt:

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

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 omvat INTBITSQL_VARIANT, enz. Merk op dat het geen alias datatype kan zijn.
  • length is een optioneel geheel getal dat de lengte van het doeltype specificeert. De length 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:

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

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:

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

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:

numeriek

geld

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:

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

De uitvoer is:

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

D) CAST() functie gebruiken met rekenkundige operatoren

We zullen de sales.orders en sales.order_items tabellen uit de voorbeelddatabase gebruiken voor de demonstratie:

Sample Tables

Het volgende statement gebruikt de CAST() functie om de maandelijkse verkopen in 2017 om te zetten naar gehele waarden.

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)

De volgende afbeelding toont de uitvoer:

SQL Server CAST Functie voorbeeld

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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *