I denne artikel, vil vi diskutere og lære grundlæggende funktioner og alle detaljer om SQL Server data type konvertering af transaktioner og også vi vil gennemgå de SQL-KONVERTERE og TRY_CONVERT indbyggede funktioner med forskellige prøver. Først vil vi forklare og afklare syntaks for S .l-konverteringsfunktionen, og så lærer vi, hvordan vi kan lave data konverteringsproces numeriske og dato/tid datatyper til karakterdata.,
Implicit vs eksplicit
processen med at ændre datatype af en værdi til en anden datatype kaldes datatypekonvertering, og også næsten alle programmeringssprog inkluderer en eller anden type datakonverteringsfunktioner eller-funktionalitet. Når vi vender vores perspektiv til s .l Server for at diskutere detaljer om S .l-datakonverteringsoperationer, kan vi først adskille datakonverteringsprocessen i to dele; implicitte og eksplicitte konverteringer., Implicit konvertering udføres af S .l Server til interne behov, og du kan også finde yderligere detaljer i artiklen Implicit konvertering i s .l Server. Eksplicit konvertering udføres eksplicit af en database programmør eller administrator og på samme tid denne konvertering proces er lavet med hjælp af enhver datakonvertering funktion. I denne artikel vil vi især fokusere på S .l CONVERT-funktionen. Denne funktion giver et middel til at konvertere en datatype til en anden specificeret datatype. Først fortolker vi syntaksen for S .l CONVERT-funktionen.,
Syntaks
1
|
KONVERTER (datatype (længde), et udtryk, en stil)
|
data_type: Denne parameter definerer målet datatype, der skal konverteres. data_type parameter kan tage disse datatyper som et input, der er vist i nedenstående array liste.
Længde: dette er en valgfri parameter, der angiver længden af måldatatypen., Standardværdien for denne parameter er 30.
udtryk: denne parameter angiver den værdi, som vi vil konvertere til en anden datatype.
stil: dette er en heltalsparameter, der angiver outputstilen for den konverterede værdi. Denne værdi er mere nyttigt til dato datatype formater.
nu vil vi styrke denne teoretiske vejledning med forskellige praktiske prøver.
konverter Float til Int
i dette eksempel konverterer vi en float-datatype til heltal., I den følgende forespørgsel erklærer vi en variabel, at datatypen er float, og så bruger vi s .l CONVERT-funktionen til at konvertere float-værdi til heltal, så vi udfører datakonverteringsoperation.,
1
2
3
4
5
6
|
–om en float-variabel
ANGIVELSE @FloatVal SOM Float
–Tildele en float værdi til en variabel
INDSTIL @FloatVal = 1132.,12345
–Konvertere float værdi til int
VÆLG KONVERTER(int, @FloatVal) SOM ConvertedValue
|
Konverter til at Flyde Varchar
I dette eksempel, vil vi konvertere en float værdi til varchar værdi. Dette eksempel ligner meget det foregående, men den eneste forskel er, at vi vil konvertere floatværdi til varchar.,
1
2
3
4
5
6
|
–om en float-variabel
ANGIVELSE @FloatVal SOM Float
–Tildele en float værdi til en variabel
INDSTIL @FloatVal = 1132.,12345
–konverter float værdi til varchar
vælg Konverter(varchar, @FloatVal) som ConvertedValue
|
i følgende eksempel sender vi ikke nogen værdi til længdeparameter I S .L convert-funktionen, så længdeparameteren skal indstilles til standardværdi. Som vi allerede har bemærket i syntaksforklaringen af S .l CONVERT-funktionen, er denne standardværdi 30, og nu vil vi bevise dette., I den følgende forespørgsel opretter vi en midlertidig tabel, og vi indsætter konverteret værdi til denne tabel, og derefter analyserer vi datastrukturen i denne tabel.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABEL, HVIS der FINDES TestConvertedTable
–om en float-variabel
ANGIVELSE @FloatVal SOM Float
–Tildele en float værdi til en variabel
INDSTIL @FloatVal = 1132.,12345
–konverter float værdi til varchar
vælg Konverter(Varchar, @FloatVal) som ConvertedValue til TestConvertedTable
— analyser den midlertidige tabel
vælg TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MA .imum_length
fra INFORMATION_SCHEMA.,KOLONNER WHERE TABLE_NAME=’TestConvertedTable’
|
Som du kan se på ovenstående billede, float data type blev konverteret til varchar værdi, og vi har ikke angivet længde parameter, så SQL Server anvendes standardværdien af længden parameter som 30.
nu indstiller vi længdeparameteren for S .l CONVERT-funktionen og kontrollerer derefter længden af varchar-datatypen igen.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABEL, HVIS der FINDES TestConvertedTable
–om en float-variabel
ANGIVELSE @FloatVal SOM Float
–Tildele en float værdi til en variabel
INDSTIL @FloatVal = 1132.,12345
–Konvertere float værdi til varchar
VÆLG KONVERTER(varchar(20), @FloatVal) SOM ConvertedValue I TestConvertedTable
— Analysere den midlertidige tabel
VÆLG TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
FRA INFORMATION_SCHEMA.KOLONNER WHERE TABLE_NAME=’TestConvertedTable’
|
Konvertere Penge til Varchar
SQL Server penge datatype hjælper til at gemme monetære værdier., Vi kan definere monetære værdier forud for et valutasymbol, Men s .l Server gemmer ikke valutasymbolerne eller nogen data, der er relateret til valutasymbol. I den følgende forespørgsel konverterer vi penge datatypen til varchar, og vi vil også bruge stilparameter I S .l convert-funktionen. Ved hjælp af stilparameteren kan vi bestemme kommaafgrænsere og længden af det højre decimalciffer. Følgende diagram viser den stil parameter værdi og output af S .l konverter funktion.,
Value |
Style Parameter |
Comma Delimiter |
Right decimal digit |
Output |
no |
||||
yes |
4,936.,56 |
|||
nej |
Konvertere flydende og Fast til Varchar
Float og reelle data typer er omtrentlige numeriske datatyper i SQL Server, og det betyder, at disse data typer opbevar ikke eksakte værdier. De gemmer en meget tæt tilnærmelse af den lagrede værdi. Nu vil vi forklare den omtrentlige numeriske datatype conception., I den følgende forespørgsel opretter vi en tabel, der har to kolonner, og disse kolonnes datatyper er float og real, og så indsætter vi nogle numeriske værdier. Faktisk forventede vi tocifrede tal i tabellen, men real og float datatype gemmer de nærmeste værdier til forventede værdier.
nedenstående tabel er citeret fra Microsoft Docs, og denne tabel forklarer konverteringsstilen for float og rigtige datatyper til tekstdata., Tip: videnskabelig notation er en særlig metode til at udtrykke meget stort antal eller små tal, der oftest bruges i videnskaben.
Værdi |
Output |
0 (default) |
Et maksimum på 6 cifre. Anvendes i videnskabelig notation, når det er relevant. |
altid 8 cifre. Altid brugt i videnskabelig notation. |
|
altid 16 cifre. Altid brugt i videnskabelig notation. |
|
altid 17 cifre. Brug til tabsfri konvertering., Med denne stil, er hver særskilt float eller reelle værdi garanteret til at konvertere til en særskilt karakter streng. |
lad os nu demonstrere et eksempel, der inkluderer alle datakonverteringsformater i henhold til denne tabel.
som du kan se i ovenstående viser resultatsættet, at stilparameteren ændrer output fra S .l CONVERT-funktionen.
konverter dato/tid til Varchar
dato/tid formater kan variere alt efter lokale indstillinger, og derfor kræver vi forskellige formater til at repræsentere dato / tid., Forestil dig, at du har en applikation, og forskellige lande, som brugerne bruger denne applikation, så hvis nogen forbinder denne applikation i USA, skal du repræsentere datoen som Måned/Dag/År format. På den anden side forbinder en anden bruger denne applikation i Storbritannien, og du skal repræsentere datoformat som Dag/Måned/År format. I dette tilfælde er vi nødt til at bestemme dato/klokkeslæt, der repræsenterer stil i henhold til locale dato/klokkeslæt indstilling. sp_helplanguage lagret procedure returnerer understøttede sprog med detaljerede oplysninger er i s .l Server.,
Derudover kan vi bestemme sproget for den angivne session, og på denne måde kan vi tilpasse dato / tidsfunktioner til et bestemt sprog. I den følgende forespørgsel indstiller vi Sprog til polsk, og så kan vi se ændringen af måned og dag navn i henhold til Polsk locale.
Tip: Som en generel regel, hvis du vil designe en multinational ansøgning database, altid gemme UTC (coordinated Universal Time) gang i en kolonne, så du kan undgå at dato/tid på problemer på grund af lokale indstillinger.,resultat at den tyske standard, kan vi bruge følgende forespørgsel:
1
|
VÆLG GETDATE (), SOM ,KONVERTERE(Varchar(50),GETDATE(),104)
|
I de følgende snyde bordet, du kan finde hver brug kombination af stil parameter og hele output format af SQL-KONVERTERE () – funktionen dato/tid for at redde data-konverteringer., o ow vil vi demonstrere denne snydebord med alle kombinationer til S .l GETDATE-funktionen, så vi kan finde ud af indflydelsen fra stilparameteren til S .l konverter funktionsudgange.
nu vil vi nævne nogle punkter, som vi skal overveje om dato / tid konvertering operation. I begyndelsen af dette afsnit talte vi om S .l Server sprogindstillinger og indstillinger, så hvis vi ændrer sprogindstillingen, påvirker det nogle af output til dato/tidskonverteringsstil., I Bello. – eksemplet ønsker vi at konvertere resultater fra getdate-funktionen, så denne indstilling påvirker direkte det forkortede månedsnavn på S .l CONVERT-funktionen.
en anden overvejelse er omkring årformat. Under nogle omstændigheder kan vi bruge stilparameter, som ikke returnerer århundredes format, men denne sag kan forårsage nogle forvirrende situationer. Som i den følgende prøve har vi to forskellige datoer, og også disse datoer gemmer forskellige år, men output fra S .l-konverteringsfunktionen er ens.,
TRY_CONVERT ()
SQL TRY_CONVERT funktion er en avanceret form for SQL-KONVERTER funktion. Den største fordel ved S .l TRY_CONVERT-funktionen er at beskytte mod datakonverteringsfejl under forespørgselsudførelse. Det er muligt, at vi kan opleve fejl på data konvertere proces med S .l skjult operation på grund af ikke-egnede eller beskidte data. S .l TRY_CONVERT-funktionen giver os dog mulighed for at undgå disse typer fejl. På samme tid er der ingen syntaksforskelle mellem funktionerne s .l CONVERT og TRY_CONVERT., Funktionen s .l TRY_CONVERT returnerer NULL-værdi, hvis datakonverteringen genererer en fejl. I nedenstående eksempel vil vi først forsøge at konvertere tegnværdi til et heltal gennem s .l CONVERT-funktionen, og denne handling returnerer en fejl.,
1
|
VÆLG KONVERTER(INT,’AnyString’) SOM ConvertFunc
|
På den anden side, hvis vi bruger SQL TRY_CONVERT funktion i stedet for SQL-KONVERTER funktion for den samme forespørgsel, vil det returnere NULL-værdi.,
1
|
SELECT TRY_CONVERT(INT,’AnyString’) AS ConvertFunc
|
Conclusion
In this article, we thoroughly reviewed the SQL CONVERT function syntax, details and significant considerations. Data conversion processes have wide usage, in practice, therefore in this article we demonstrated various examples., Jeg er anbefale, at du være forsigtig med dato / tid datatype konvertering, hvis din database bliver brugt i forskellige lande. Ligeledes formatering til dato / tid datatyper er et andet vigtigt punkt.
- Forfatter
- Seneste Indlæg
det meste af hans karriere har været fokuseret på S .l Server Database Administration og udvikling. Hans nuværende interesser er i database administration og Business Intelligence. Du kan finde ham på LinkedIn.,
Vis alle indlæg af Esat Erkec
- Kom godt i gang med SQL Programmering – februar 3, 2021
- Hvordan man kan læse en gennemførelsesplan med alle detaljer – januar 28, 2021
- SQL SELECT-TOP erklæring oversigt og eksempler – 25 januar 2021
Skriv et svar