sql >> Database teknologi >  >> RDS >> Sqlserver

CONVERT() i SQL Server

I SQL Server er CONVERT() funktion konverterer et udtryk af én datatype til en anden.

Her er et hurtigt overblik over funktionen med eksempler.

Syntaks

Syntaksen ser sådan ud:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

Hvor expression er udtrykket, der skal konverteres, data_type er den nye datatype og length er en valgfri længde for den nye datatype.

Den valgfri style argument kan bruges til at specificere, hvordan funktionen skal oversætte expression argument. For eksempel kan du bruge dette argument til at angive datoformatet.

Eksempel

Her er et eksempel på konvertering af en streng til decimal:

SELECT CONVERT(DECIMAL(5,2), '007');

Resultat:

7.00

String til dato

Her er et eksempel på casting af en streng til en dato:

SELECT CONVERT(date, '09 Feb 2030');

Resultat:

2030-02-09

I dette tilfælde CONVERT() funktion var i stand til at bestemme, hvilke datodele er hvilke, fordi jeg har angivet datoen i et format, som den genkender.

Hvis du sender en værdi, der ikke kan castes som en dato, resulterer det i en fejl:

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

Sproget i den aktuelle session kan gøre en forskel i, hvordan datoer fortolkes.

Her er, hvad der sker, når du bruger det britiske sprog:

SET LANGUAGE British;
SELECT CONVERT(date, '09/02/2030');

Resultat:

2030-02-09

I dette tilfælde blev datoen fortolket som værende den niende dag i februar.

Lad os ændre sproget til us_English :

SET LANGUAGE us_English;
SELECT CONVERT(date, '09/02/2030');

Resultat:

2030-09-02

Denne gang fortolkede den datoen som værende den anden dag i september.

style Argument

Vi kan bruge den valgfri style argument for at specificere, hvordan udtrykket skal oversættes.

Eksempel:

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 |
+------------+------------+--------------+------------+------------+

Stringsammenkædning

Her er et eksempel på at caste en numerisk værdi til en streng for at sammenkæde værdien med en streng:

SELECT 'Age: ' + CONVERT(varchar(10), 27);

Resultat:

Age: 27

Her er, hvad der sker, hvis vi ikke konverterer 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 forsøger at sammenkæde to værdier med forskellige datatyper, skal SQL Server implicit konvertere en af ​​værdierne til at bruge den andens datatype, så de begge er den samme datatype, før den kan udføre sammenkædningen. Det følger reglerne for datatypeprioritet at udføre denne konvertering.

I SQL Server er int datatypen har en højere prioritet end varchar .

Derfor forsøger SQL Server i ovenstående eksempel at konvertere strengen til et heltal, men dette mislykkes, fordi strengen ikke kan konverteres til et heltal.

Trunkering af tekst

Et praktisk lille trick, vi kan udføre med CONVERT() Funktionen er at afkorte længere strenge til en mere læsbar længde.

Her er et eksempel på afkortning af tekst valgt fra en databasetabel:

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 |
+---------------------------------+----------------------+

Flere oplysninger

CONVERT() funktionen fungerer på samme måde som CAST() funktion, og mange datakonverteringer kan udføres ved hjælp af begge. Når det er sagt, er der forskelle mellem dem.

Se Microsofts dokumentation for CAST() og CONVERT() for mere detaljerede oplysninger om brugen af ​​denne funktion.


  1. Hvorfor får jeg PLS-00302:komponent skal erklæres, når den eksisterer?

  2. Nye Oracle-kompatibilitetsfunktioner i PostgresPlus Advanced Server 9.3Beta

  3. Hvordan redigeres lagret procedure i Oracle SQL Developer?

  4. Sådan beregnes et kvadrat i SQL Server