I SQL Server, CONVERT()
funktion konverterar ett uttryck av en datatyp till en annan.
Här är en snabb översikt över funktionen med exempel.
Syntax
Syntaxen ser ut så här:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Där expression
är uttrycket som ska konverteras, data_type
är den nya datatypen och length
är en valfri längd för den nya datatypen.
Den valfria style
argument kan användas för att specificera hur funktionen ska översätta expression
argument. Du kan till exempel använda detta argument för att ange datumformatet.
Exempel
Här är ett exempel på att konvertera en sträng till decimal:
SELECT CONVERT(DECIMAL(5,2), '007');
Resultat:
7.00
Sträng till datum
Här är ett exempel på hur du castar en sträng till ett datum:
SELECT CONVERT(date, '09 Feb 2030');
Resultat:
2030-02-09
I det här fallet CONVERT()
funktion kunde avgöra vilka datumdelar som är vilka eftersom jag angav datumet i ett format som den känner igen.
Att skicka ett värde som inte kan castas som ett datum resulterar i ett fel:
SELECT CONVERT(date, 'My Birthday');
Resultat:
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
Lokal
Språket för den aktuella sessionen kan göra skillnad i hur datum tolkas.
Här är vad som händer när du använder det brittiska språket:
SET LANGUAGE British;
SELECT CONVERT(date, '09/02/2030');
Resultat:
2030-02-09
I det här fallet tolkades datumet som den nionde februari.
Låt oss ändra språket till us_English
:
SET LANGUAGE us_English;
SELECT CONVERT(date, '09/02/2030');
Resultat:
2030-09-02
Den här gången tolkade den datumet som den andra dagen i september.
style
Argument
Vi kan använda den valfria style
argument för att specificera hur uttrycket ska översättas.
Exempel:
SET LANGUAGE British;
SELECT
CONVERT(date, '09/02/2030') AS "British",
CONVERT(date, '09/02/2030', 101) AS "US",
CONVERT(date, '09/02/30', 1) AS "US (short)",
CONVERT(date, '20300902', 112) AS "ISO",
CONVERT(date, '09.02.2030', 104) AS "German";
Resultat:
+------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Strängsammansättning
Här är ett exempel på hur man castar ett numeriskt värde till en sträng för att sammanfoga värdet med en sträng:
SELECT 'Age: ' + CONVERT(varchar(10), 27);
Resultat:
Age: 27
Så här händer om vi inte konverterar det först:
SELECT 'Age: ' + 27;
Resultat:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Age: ' to data type int.
När du försöker sammanfoga två värden med olika datatyper måste SQL Server implicit konvertera ett av värdena för att använda datatypen för det andra, så att de båda är samma datatyp innan den kan utföra sammankopplingen. Det följer reglerna för datatypsprioritet för att göra denna konvertering.
I SQL Server, int
datatyp har högre prioritet än varchar
.
Därför försöker SQL Server i exemplet ovan att konvertera strängen till ett heltal, men detta misslyckas eftersom strängen inte kan konverteras till ett heltal.
Trunkera text
Ett praktiskt litet trick vi kan utföra med CONVERT()
Funktionen är att trunkera längre strängar till en mer läsbar längd.
Här är ett exempel på trunkering av text vald från en databastabell:
SELECT
ProductName,
CONVERT(varchar(20), ProductName) AS Truncated
FROM Products;
Resultat:
+---------------------------------+----------------------+ | ProductName | Truncated | |---------------------------------+----------------------| | Left handed screwdriver | Left handed screwdri | | Long Weight (blue) | Long Weight (blue) | | Long Weight (green) | Long Weight (green) | | Sledge Hammer | Sledge Hammer | | Chainsaw | Chainsaw | | Straw Dog Box | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu | | Right handed screwdriver | Right handed screwdr | +---------------------------------+----------------------+
Mer information
CONVERT()
Funktionen fungerar på liknande sätt som CAST()
funktion, och många datakonverteringar kan göras med endera. Som sagt, det finns skillnader mellan dem.
Se Microsofts dokumentation för CAST()
och CONVERT()
för mer detaljerad information om hur du använder den här funktionen.