SQLShack (Magyar)

posted in: Articles | 0

ebben a cikkben az SQL Server adattípus-konvertáló műveletekkel kapcsolatos alapokról és minden részletről beszélünk, valamint áttekintjük az SQL CONVERT and TRY_CONVERT beépített funkcióit is különböző mintákkal. Először elmagyarázzuk és tisztázzuk az SQL CONVERT funkció szintaxisát, majd megtanuljuk, hogyan készíthetjük az adatok konvertálását a folyamat numerikus és dátum/idő adattípusokká karakter adatokká.,

Implicit vs Explicit

az Érték adattípusának egy másik adattípusra történő megváltoztatásának folyamatát adattípus konverziónak nevezik, valamint szinte minden programozó nyelv tartalmaz valamilyen típusú adat konvertáló funkciót vagy funkciót. Amikor az SQL Server felé fordítjuk perspektívánkat az SQL data converting műveletek részleteinek megvitatása érdekében, először két részre oszthatjuk az adatkonverziós folyamatot; implicit és explicit konverziók., Az Implicit konverziót az SQL Server végzi belső igények kielégítésére, valamint további részleteket is találhat a cikkben Implicit konverzió az SQL Serverben. Az Explicit konverziót kifejezetten egy adatbázis-programozó vagy rendszergazda végzi, ugyanakkor ez a konverziós folyamat bármilyen adatkonverziós funkció segítségével történik. Ebben a cikkben különösen az SQL CONVERT funkcióra összpontosítunk. Ez a funkció lehetővé teszi az egyik adattípus konvertálását egy másik megadott adattípusra. Először értelmezzük az SQL CONVERT funkció szintaxisát.,

Szintaxis

1
CONVERT (adattípusa (hosszúság), kifejezés, stílus)

data_type: Ez a paraméter határozza meg, a cél az adatok típus, amelyet konvertálni. data_type paraméter lehet venni ezeket az adattípusokat, mint egy bemenet, amely látható az alábbi tömb lista.

hossz: ez egy opcionális paraméter, amely meghatározza a cél adattípus hosszát., Ennek a paraméternek az alapértelmezett értéke 30.

kifejezés: Ez a paraméter adja meg azt az értéket, amelyet egy másik adattípusba szeretnénk konvertálni.

stílus: ez egy egész paraméter, amely meghatározza a konvertált érték kimeneti stílusát. Ez az érték sokkal hasznosabb a mai napig adattípus formátumok.

most ezt az elméleti utasításokat különféle gyakorlati mintákkal erősítjük meg.

konvertálja az úszót Int

– re ebben a példában egy úszó adattípust egész számra konvertálunk., A következő lekérdezésben deklarálunk egy változót, hogy az adattípus úszó, majd az SQL CONVERT funkciót használjuk annak érdekében, hogy az úszó értéket egész számra konvertáljuk, így adat konvertáló műveletet hajtunk végre.,

1
2
3
4
5
6

–Nyilvánító úszó változó
FELTÜNTETVE @FloatVal, MINT Úszó
–Hozzárendelése egy lebegőpontos érték a változó
SET @FloatVal = 1132.,12345
–Átalakítani float értéket int
VÁLASSZA a KONVERTÁLÁS(int, @FloatVal) MINT ConvertedValue

Convert Úszó Varchar

ebben A példában fogjuk alakítani egy lebegőpontos érték, hogy varchar érték. Ez a példa nagyon hasonlít az előzőhöz, de az egyetlen különbség az, hogy az úszóértéket varchar-ra konvertáljuk.,

1
2
3
4
5
6

–Nyilvánító úszó változó
FELTÜNTETVE @FloatVal, MINT Úszó
–Hozzárendelése egy lebegőpontos érték a változó
SET @FloatVal = 1132.,12345
–konvertálja az úszóértéket varchar
válassza a konvertálást(varchar, @FloatVal) a ConvertedValue

a következő példában nem küldünk semmilyen értéket az SQL convert funkció hossz paraméterére, így a hossz paramétert alapértelmezett értékre kell állítani. Amint azt az SQL CONVERT funkció szintaxis magyarázatában már megjegyeztük, ez az alapértelmezett érték 30, Most ezt bizonyítani fogjuk., A következő lekérdezésben létrehozunk egy ideiglenes táblát, majd beillesztjük a konvertált értéket ebbe a táblázatba, majd elemezzük a táblázat adatszerkezetét.,

mint a fenti képen látható, az úszó adattípust varchar értékre konvertáltuk, és nem állítottuk be a hosszt paraméter tehát SQL Server alkalmazta az alapértelmezett érték a hossz paraméter 30.

most beállítjuk az SQL CONVERT funkció hosszparaméterét, majd ellenőrizzük újra a varchar adattípus hosszát.,

1
2
3
4
5
6
7
8
9
10

DROP TABLE HA LÉTEZIK TestConvertedTable
–Nyilvánító úszó változó
FELTÜNTETVE @FloatVal, MINT Úszó
–Hozzárendelése egy lebegőpontos érték a változó
SET @FloatVal = 1132.,12345
–konvertálja az úszóértéket varchar
válassza a konvertálást (varchar, @FloatVal) a konvertált értékként a TestConvertedTable
– – elemezze az ideiglenes táblázatot
válassza a TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
– tól INFORMATION_SCHEMA.,Oszlopok, ahol TABLE_NAME=’TestConvertedTable’

pénz konvertálása Varchar

az SQL Server money adattípus segít a monetáris értékek tárolásában., Meghatározhatunk pénzbeli értékeket, amelyeket egy valutaszimbólum előz meg, azonban az SQL Server nem tárolja a pénznem szimbólumokat vagy a valutaszimbólumhoz kapcsolódó adatokat. A következő lekérdezésben a money adattípust varchar-ra konvertáljuk, valamint az SQL convert funkció stílusparaméterét is használjuk. A stílusparaméter segítségével meghatározhatjuk a vesszőhatárolókat, valamint a jobb decimális számjegy hosszát. Az alábbi ábra az SQL CONVERT funkció stílusparaméter értékét és kimenetét mutatja.,

1
2
3
4
5
6
7
8
9
10

DROP TABLE HA LÉTEZIK TestConvertedTable
–Nyilvánító úszó változó
FELTÜNTETVE @FloatVal, MINT Úszó
–Hozzárendelése egy lebegőpontos érték a változó
SET @FloatVal = 1132.,12345
–konvertálja az úszóértéket varchar
válassza a konvertálást(varchar(20), @FloatVal) konvertálva TestConvertedTable
– – elemezze az ideiglenes táblát
válassza a TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
– tól INFORMATION_SCHEMA.Oszlopok, ahol TABLE_NAME= ‘TestConvertedTable’

Value

Style Parameter

Comma Delimiter

Right decimal digit

Output

no

yes

4,936.,56

no

float és Real konvertálása varchar

float és Real adattípusok hozzávetőleges numerikus adattípusok az SQL Serverben, ami azt jelenti, hogy ezek az adattípusok nem tárolnak pontos értékeket. A tárolt érték nagyon közeli közelítését tárolják. Most elmagyarázzuk a hozzávetőleges numerikus adattípus fogalmát., A következő lekérdezésben létrehozunk egy táblázatot, amelynek két oszlopa van, ezek az oszlop adattípusai lebegnek és valósak, majd beillesztünk néhány numerikus értéket. Valójában két számjegyű számokat vártunk a táblázatban, de a valós és float adattípus tárolja a legközelebbi értékeket a várt értékekhez.

az alábbi táblázat a Microsoft Docs-ból származik, és ez a táblázat ismerteti az úszó és a valós adattípusok szöveges adatokká történő konvertálását.,

tipp: a tudományos jelölés egy speciális módszer a nagyon nagy vagy kis számok kifejezésére, amelyeket leginkább a tudományban használnak.

érték

kimenet

0 (alapértelmezett)

legfeljebb 6 számjegy. Tudományos jelölésben használják, ha szükséges.

mindig 8 számjegy. Mindig tudományos jelölésben használják.

mindig 16 számjegy. Mindig tudományos jelölésben használják.

mindig 17 számjegy. Használja veszteségmentes konverzióhoz., Ezzel a stílussal minden különálló úszó vagy valós érték garantáltan átalakul egy különálló karakterláncra.

most mutassunk be egy példát, amely tartalmazza az összes adatkonverziós stílust a táblázat szerint.

amint az a fentiekből látható, az eredménykészlet azt mutatja, hogy a stílusparaméter megváltoztatja az SQL CONVERT funkció kimenetét.

dátum / idő konvertálása Varchar

Dátum / idő formátumok a területi beállítások szerint változhatnak, ezért különféle formátumokra van szükségünk a dátum/idő megjelenítéséhez., Képzeld el, hogy van egy alkalmazás, és a különböző országokban a felhasználók használják ezt az alkalmazást, így ha valaki csatlakozik ezt az alkalmazást az USA-BAN, meg kell, hogy képviselje a dátumot, mint hónap/nap/év formátumban. A másik oldalon egy másik felhasználó csatlakoztatja ezt az alkalmazást az Egyesült Királyságban, a dátumformátumot pedig napi/hónap/év formátumban kell képviselnie. Ebben az esetben meg kell határozni a dátumot/időt képviselő stílus szerint locale date/time beállítás. sp_helplanguage tárolt eljárás visszatér támogatott nyelvek részletes információkat az SQL Server.,

ezenkívül meghatározhatjuk a megadott munkamenet nyelvét, így a dátum/idő függvényeket egy adott nyelvhez igazíthatjuk. A következő lekérdezésben a nyelvet lengyelre állítjuk, majd láthatjuk a hónap és a nap nevének változását a Lengyel nyelv szerint.

tipp: általános szabály, hogy ha multinacionális alkalmazás adatbázist tervez, mindig tárolja az UTC (összehangolt univerzális idő) időt egy oszlopban, hogy elkerülje a helyi beállítások miatt felmerülő dátum/idő problémákat.,eredmény, hogy a német szabvány, akkor használja a következő lekérdezést:

1
VÁLASSZA ki a GETDATE (), MINT ,ÁTALAKÍTANI(Varchar(50),GETDATE(),104), MINT a

az alábbi cheat táblázat, megtalálható minden használat kombinációja stílus paramétert, az egész kimeneti formátum az SQL CONVERT () funkció a dátum/idő karakter adatok konverziók.,

ow, bemutatjuk ezt a csaló táblát az SQL GETDATE funkció Összes kombinációjával, hogy kitaláljuk a stílusparaméter hatását az SQL CONVERT funkció kimeneteire.

most megemlítünk néhány pontot, amelyeket figyelembe kell vennünk a dátum/idő konverziós műveletről. A szakasz elején az SQL Server nyelvi beállításairól, beállításairól beszéltünk, így ha megváltoztatjuk a nyelvi beállítást, az hatással van a dátum/idő konverziós stílus néhány kimenetére., A bellow példában a getdate függvény eredményeit szeretnénk konvertálni, így ez a beállítás közvetlenül befolyásolja az SQL CONVERT funkció rövidített hónapnevét.

egy másik szempont az év formátuma. Bizonyos körülmények között használhatjuk a stílusparamétert, amely nem tér vissza a century formátumhoz, de ez az eset zavaró helyzeteket okozhat. Például a következő mintában két különböző Dátum van, valamint ezek a dátumok különböző éveket tárolnak, azonban az SQL CONVERT funkció kimenete hasonló.,

TRY_CONVERT ()

az SQL TRY_CONVERT funkció az SQL CONVERT funkció egy speciális formája. Az SQL TRY_CONVERT funkció fő előnye, hogy védelmet nyújt az adatok konvertáló hibáitól a lekérdezés végrehajtása során. Lehetséges, hogy hibákat tapasztalhatunk az adatok konvertálási folyamatában az SQL COVERT művelettel a nem megfelelő vagy piszkos adatok miatt. Az SQL TRY_CONVERT funkció azonban lehetővé teszi számunkra, hogy elkerüljük az ilyen típusú hibákat. Ugyanakkor az SQL CONVERT és a TRY_CONVERT függvények között nincs szintaktikai különbség., Az SQL TRY_CONVERT függvény NULL értéket ad vissza, ha az adatkonverzió hibát generál. Az alábbi példában először megpróbálunk karakterértéket egész számra konvertálni az SQL CONVERT funkción keresztül, ez a művelet hibát fog visszaadni.,

1
VÁLASSZUK a CONVERT(INT,’AnyString’), MINT ConvertFunc

másrészt, ha használjuk az SQL TRY_CONVERT funkció helyett az SQL ÁTALAKÍTANI funkció ugyanaz a lekérdezés visszaadja a NULL érték.,

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., Azt javaslom, hogy legyen óvatos a dátum / idő adattípus-átalakítással, ha az adatbázist különböző országokban használják. Hasonlóképpen formázás dátum / idő adattípusok egy másik fontos pont.

  • Szerző
  • Utolsó Hozzászólás
Esat Erkec egy SQL Server szakember, aki kezdte pályafutását, 8+ évvel ezelőtt, mint egy Szoftver Fejlesztő. Ő egy SQL Server Microsoft Certified Solutions szakértő.,
karrierjének nagy része az SQL Server adatbázis adminisztrációjára és fejlesztésére összpontosított. Jelenlegi érdekeltségei az adatbázis-ügyintézés és az üzleti intelligencia. Megtalálhatja őt a LinkedIn-en.,
összes Megtekintése hozzászólások Esat Erkec

Legújabb hozzászólások Esat Erkec (minden)
  • első lépések SQL Programozás – február 3, 2021
  • Hogyan kell olvasni egy végrehajtási terv részletes – január 28, 2021
  • SQL SELECT TOP nyilatkozat áttekintés példákkal – január 25, 2021