sql >> Databasteknik >  >> RDS >> Sqlserver

CONVERT() i SQL Server

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.


  1. SCOPE_IDENTITY() för GUID?

  2. Hur man trunkerar TABLE i Oracle

  3. Hantera e-postbekräftelse under registrering i kolv

  4. Heroku Postgresql med Google Datastudio