SQLShack (Svenska)

posted in: Articles | 0

i den här artikeln kommer vi att diskutera och lära sig grunderna och alla detaljer om SQL Server Data typ konvertera operationer och även vi kommer att granska SQL konvertera och TRY_CONVERT inbyggda funktioner med olika prover. Först kommer vi att förklara och klargöra syntax för SQL CONVERT-funktionen och sedan kommer vi att lära oss hur kan vi göra data konvertering process numeriska och datum/tid datatyper till teckendata.,

Implicit vs Explicit

processen att ändra datatyp av ett värde till en annan datatyp kallas datatypkonvertering och även nästan alla programmeringsspråk inkluderar någon typ av datakonverteringsfunktioner eller funktionalitet. När vi vänder vårt perspektiv till SQL Server för att diskutera detaljer om SQL-datakonvertering, kan vi först separera datakonverteringsprocessen i två delar; implicita och explicita konverteringar., Implicit konvertering görs av SQL Server för interna behov och du kan också hitta ytterligare detaljer i artikeln Implicit konvertering i SQL Server. Explicit konvertering utförs explicit av en databas programmerare eller administratör och samtidigt denna konverteringsprocess görs med hjälp av någon datakonverteringsfunktion. I den här artikeln kommer vi särskilt att fokusera på SQL CONVERT-funktionen. Denna funktion ger ett sätt att konvertera en datatyp till en annan angiven datatyp. Först tolkar vi syntaxen för SQL CONVERT-funktionen.,

Syntax

1
konvertera (datatyp (längd), uttryck, stil)

data_type: denna parameter definierar måldatatypen som ska konverteras. data_type parameter kan ta dessa datatyper som en ingång som visas i listan nedan array.

Längd: det här är en valfri parameter som anger måldatatypens längd., Standardvärdet för denna parameter är 30.

uttryck: denna parameter anger det värde som vi vill konvertera till en annan datatyp.

style: det här är en heltalsparameter som anger utdatastilen för det konverterade värdet. Detta värde är mer användbart hittills datatypformat.

nu kommer vi att förstärka dessa teoretiska instruktioner med olika praktiska prov.

konvertera Float till Int

i det här exemplet konverterar vi en float datatyp till heltal., I följande fråga kommer vi att förklara en variabel som datatyp är float och då kommer vi att använda SQL CONVERT-funktionen för att konvertera float-värde till heltal så för att vi ska utföra datakonverteringsoperation.,

1
2
3
4
5
6

–deklarerar en flottörvariabel
anger @floatval som float
–tilldela ett floatvärde till variabel
set @floatval = 1132.,
–Convert float value to int
välj Konvertera(int, @FloatVal) som ConvertedValue

konvertera Float till Varchar

i det här exemplet kan vi konvertera Float till Varchar

kommer att konvertera en float värde till varchar värde. Detta exempel är mycket lik föregående men den enda skillnaden är att vi kommer att konvertera float värde till varchar.,

1
2
3
4
5
6

–deklarerar en flottörvariabel
anger @floatval som float
–tilldela ett floatvärde till variabel
set @floatval = 1132.,
–Convert float value to varchar
välj CONVERT(varchar, @FloatVal) som ConvertedValue

i följande exempel kommer vi inte att skicka något värde till längdsparametern för varchar SQL konvertera funktion så längd parameter måste ställas in till standardvärde. Som redan vi noterade i syntaxförklaringen av SQL CONVERT-funktionen är detta standardvärde 30 och nu kommer vi att bevisa detta., I följande fråga kommer vi att skapa en tillfällig tabell och vi kommer att infoga konverterat värde till den här tabellen och sedan analyserar vi datastrukturen i den här tabellen.,

1
2
3
4
5
6
7
8
9
10

drop table if exists testconvertedtable
–declaring a float variable
anger @floatval som float
–assign a float value to variable
set @floatval = 1132.,Div>–Convert float value to varchar
välj CONVERT (varchar, @FloatVal) som ConvertedValue till TestConvertedTable
— analysera den temporära tabellen
välj TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
från INFORMATION_SCHEMA.,Kolumner där TABLE_NAME=’TestConvertedTable’

som du kan se i ovanstående bild konverterades float-datatypen till varchar-värde och vi ställde inte in längdsparametern så att SQL Server tillämpade standardvärdet för längdsparametern som 30.

Nu ställer vi in längdparametern för SQL CONVERT-funktionen och kontrollerar sedan längden på varchar-datatypen.,

1
2
3
4
5
6
7
8
9
10

drop table if exists testconvertedtable
–declaring a float variable
anger @floatval som float
–assign a float value to variable
set @floatval = 1132.,12345
–Konvertera float-värde varchar
VÄLJ KONVERTERA(varchar(20), @FloatVal) SOM ConvertedValue I TestConvertedTable
— Analysera den temporära tabellen
VÄLJ TABELLNAMN,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
FRÅN INFORMATION_SCHEMA.Kolumner där TABLE_NAME=’TestConvertedTable’

konvertera pengar till Varchar

datatypen för SQL Server money hjälper till att lagra monetära värden., Vi kan definiera monetära värden föregås av en valutasymbol men SQL Server lagrar inte valutasymboler eller data som är relaterade till valutasymbol. I följande fråga kommer vi att konvertera pengardatatypen till varchar och vi kommer också att använda stilparameter för SQL convert-funktionen. Med hjälp av stilparametern kan vi bestämma kommaavgränsare och längd på rätt decimalsiffra. Följande diagram visar parametervärdet för stil och utdata för SQL CONVERT-funktionen.,

Value

Style Parameter

Comma Delimiter

Right decimal digit

Output

no

yes

4,936.,56

nej

konvertera Float och Real till Varchar

flyta och verkliga datatyper är ungefärliga numeriska datatyper i SQL Server och det innebär att dessa datatyper inte lagrar exakta värden. De lagrar en mycket nära approximation av det lagrade värdet. Nu kommer vi att förklara den ungefärliga numeriska datatypen conception., I följande fråga kommer vi att skapa en tabell som har två kolumner och dessa kolumners datatyper är float och real och då kommer vi att infoga några numeriska värden. I själva verket förväntade vi oss tvåsiffriga tal i tabellen, men real och float datatyp lagrar de närmaste värdena till förväntade värden.

tabellen nedan Citeras från Microsoft Docs och den här tabellen förklarar konverteringsstilen för flottören och de verkliga datatyperna till textdata., tips: vetenskaplig notation är en speciell metod för att uttrycka mycket stort antal eller små tal som oftast används inom vetenskapen.

värde

utgång

0 (standard)

högst 6 siffror. Används i vetenskaplig notation, när så är lämpligt.

alltid 8 siffror. Används alltid i vetenskaplig notation.

alltid 16 siffror. Används alltid i vetenskaplig notation.

alltid 17 siffror. Använd för förlustfri konvertering., Med denna stil garanteras varje distinkt float eller verkligt värde att konvertera till en distinkt teckensträng.

låt oss nu visa ett exempel som innehåller alla datakonverteringsstilar enligt denna tabell.

som du kan se ovan visar resultatuppsättningen att stilparametern ändrar utdata för SQL CONVERT-funktionen.

konvertera datum/tid till Varchar

datum/tidsformat kan variera beroende på lokala inställningar och därför kräver vi olika format för att representera datum / tid., Tänk dig att du har ett program och olika länder användare använder den här applikationen, så om någon ansluter den här applikationen i USA måste du representera datumet som Månad/Dag/år format. På andra sidan ansluter en annan användare den här applikationen i Storbritannien och du måste representera datumformat som Dag/Månad/År format. I det här fallet måste vi bestämma datum/tid som representerar stil enligt locale date/time setting. sp_helplanguage lagrad procedur returnerar språk som stöds med detaljerad information i SQL Server.,

dessutom kan vi bestämma språket för angiven session och på så sätt kan vi anpassa datum / tidsfunktioner till visst språk. I följande fråga kommer vi att ställa in språket till polska och då kan vi se förändringen av månad och dag namn enligt polska språk.

tips: om du utformar en multinationell applikationsdatabas ska du som regel alltid lagra UTC (Coordinated Universal Time) – tiden i en kolumn så att du kan undvika datum – / tidsproblem på grund av lokala inställningar.,resultat till den tyska standarden kan vi använda följande fråga:

1
välj getdate() som, konvertera(varchar(50), getdate (), 104) som

i följande fuska tabell kan du hitta varje användningskombination av stilparameter och hela utdataformat för SQL konvertera () funktion för datum/tid till teckendata konverteringar.,

ow, vi kommer att visa det här fuska bordet med alla kombinationer för SQL GETDATE-funktionen så att vi kan räkna ut påverkan av stilparametern till SQL CONVERT-funktionsutgångarna.

nu kommer vi att nämna några punkter som vi måste överväga om konverteringsoperation för datum / tid. I början av det här avsnittet pratade vi om SQL Server-språkalternativ och inställningar, så om vi ändrar språkinställningen påverkar det några av utdata för konverteringsstil för datum/tid., I det nedan exemplet vill vi konvertera resultat från GETDATE-funktionen så den här inställningen påverkar direkt det förkortade månadsnamnet på SQL CONVERT-funktionen.

ett annat övervägande handlar om årformat. Under vissa omständigheter kan vi använda stilparameter som inte returnerar talet format men det här fallet kan orsaka vissa förvirrande situationer. Såsom i följande prov har vi två olika datum och även dessa datum lagra olika år men produktionen av SQL konvertera funktionen är liknande.,

TRY_CONVERT ()

SQL TRY_CONVERT-funktionen är en avancerad form av SQL CONVERT-funktionen. Den största fördelen med SQL TRY_CONVERT-funktionen är att skydda mot datakonverteringsfel under query execution. Det är möjligt att vi kan uppleva fel på data konvertera process med SQL dold operation på grund av icke-lämpliga eller smutsiga data. SQL TRY_CONVERT-funktionen tillåter oss dock att undvika dessa typer av fel. Samtidigt finns det inga syntaxskillnader mellan SQL CONVERT och TRY_CONVERT-funktionerna., SQL TRY_CONVERT-funktionen returnerar NULL-värde om datakonverteringen genererar ett fel. I exemplet nedan kommer vi först att försöka konvertera teckenvärde till ett heltal genom SQL CONVERT-funktionen och den här åtgärden kommer att returnera ett fel.,

1
SELECT CONVERT(int,’anystring’) som convertfunc

å andra sidan, om vi använder SQL try_convert-funktionen istället för SQL convert-funktionen för samma fråga kommer det att returnera null-värde.,

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., Jag rekommenderar att du vara försiktig med datum / tid datatyp konvertering om din databas används i olika länder. Likaså formatering hittills / tid datatyper är en annan viktig punkt.

  • författare
  • Senaste inlägg
Esat Erkec är en SQL Server professionell som började sin karriär 8+ år sedan som en programvara utvecklare. Han är en SQL Server Microsoft Certified Solutions Expert.,
större delen av sin karriär har fokuserats på SQL Server databasadministration och utveckling. Hans nuvarande intressen är i databasadministration och Business Intelligence. Du kan hitta honom på LinkedIn.,
Visa alla inlägg av Esat Erkec

Senaste inlägg av Esat Erkec (se alla)
  • komma igång med SQL programmering – 3 februari 2021
  • hur man läser en exekveringsplan med alla detaljer – 28 januari 2021
  • SQL SELECT top statement Översikt och exempel – 25 januari 2021

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *