V tomto článku, budeme diskutovat o tom, a naučit se základy a všechny podrobnosti o serveru SQL Server datový typ konverze operace a také budeme přezkoumá SQL PŘEVÉST a TRY_CONVERT vestavěných funkcí s různými vzorky. Nejprve vysvětlíme a objasníme syntaxi funkce SQL CONVERT a poté se dozvíme, jak můžeme provést proces převodu dat numerické a datové typy data/času na data znaků.,
Implicitní vs Explicitní
proces změny datového typu hodnoty do další datový typ je označován jako datový typ konverze, a také téměř všechny programovací jazyky obsahují některé typ dat, konverzi funkce nebo funkce. Když obrátíme náš pohled na SQL Server, abychom diskutovali o podrobnostech operací převodu dat SQL, můžeme nejprve oddělit proces převodu dat na dvě části; implicitní a explicitní konverze., Implicitní konverze se provádí SQL Server pro vnitřní potřeby a můžete také najít další podrobnosti v článku implicitní konverze v SQL Server. Explicitní konverze je prováděna explicitně databázovým programátorem nebo správcem a současně se tento proces konverze provádí pomocí jakékoli funkce převodu dat. V tomto článku se zaměříme zejména na funkci SQL CONVERT. Tato funkce poskytuje prostředky pro převod jednoho datového typu na jiný zadaný datový typ. Nejprve budeme interpretovat syntaxi funkce SQL CONVERT.,
Syntax
1
|
CONVERT (datový typ (délka), výraz, styl)
|
data_type: Tento parametr definuje cílový datový typ, který má být převeden. parametr data_type může tyto datové typy brát jako vstup, který je uveden v níže uvedeném seznamu polí.
délka: jedná se o volitelný parametr, který určuje délku cílového datového typu., Výchozí hodnota tohoto parametru je 30.
výraz: tento parametr určuje hodnotu, kterou chceme převést na jiný datový typ.
style: jedná se o celočíselný parametr, který určuje výstupní styl převedené hodnoty. Tato hodnota je užitečnější k dnešnímu dni formáty datového typu.
nyní tyto teoretické pokyny posílíme různými praktickými vzorky.
převést Float na Int
v tomto příkladu převedeme datový typ float na celé číslo., V následujícím dotazu, budeme deklarovat proměnnou datového typu float a pak budeme používat SQL funkce CONVERT chcete-li převést desetinné číslo na celé číslo tak, že budeme provádět datové konverze provozu.,
1
2
3
4
5
6
|
–Deklarovat proměnnou float
s UVEDENÍM @FloatVal JAKO Float
–Přiřadit float hodnota pro proměnnou
SET @FloatVal = 1132.,12345
–Convert hodnota float na int
SELECT CONVERT(int, @FloatVal) JAKO ConvertedValue
|
Převést na Float Varchar
V tomto příkladu, budeme-li převést desetinné číslo varchar hodnoty. Tento příklad je velmi podobný předchozímu, ale jediný rozdíl je v tom, že převedeme hodnotu float na varchar.,
1
2
3
4
5
6
|
–Deklarovat proměnnou float
s UVEDENÍM @FloatVal JAKO Float
–Přiřadit float hodnota pro proměnnou
SET @FloatVal = 1132.,12345
–Převést desetinné číslo varchar
SELECT CONVERT(varchar, @FloatVal) JAKO ConvertedValue
|
V následujícím příkladu nebudeme posílat žádné hodnoty pro délky parametr SQL CONVERT funkce, takže délka parametru musí být nastavena na výchozí hodnotu. Jak již bylo uvedeno v syntaktickém vysvětlení funkce SQL CONVERT, tato výchozí hodnota je 30 a nyní to dokážeme., V následujícím dotazu vytvoříme dočasnou tabulku a do této tabulky vložíme převedenou hodnotu a poté budeme analyzovat datovou strukturu této tabulky.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE, POKUD EXISTUJE TestConvertedTable
–Deklarovat proměnnou float
UVÁDÍ, @FloatVal JAKO Float
–Přiřadit float hodnota pro proměnnou
SET @FloatVal = 1132.,12345
–Převést desetinné číslo varchar
SELECT CONVERT(varchar, @FloatVal) JAKO ConvertedValue DO TestConvertedTable
— Analyzujte dočasné tabulky
SELECT TABLE_NAME,JMÉNO_SLOUPCE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
Z INFORMATION_SCHEMA.,SLOUPCE, KDE TABLE_NAME=’TestConvertedTable‘
|
Jak můžete vidět na obrázku výše, float typ dat byl převeden do varchar hodnoty, a my jsme neměli nastavit parametr délka, takže SQL Server aplikuje výchozí hodnotu pro parametr délka 30.
nyní nastavíme parametr délky funkce SQL CONVERT a poté znovu zaškrtneme délku datového typu varchar.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE, POKUD EXISTUJE TestConvertedTable
–Deklarovat proměnnou float
UVÁDÍ, @FloatVal JAKO Float
–Přiřadit float hodnota pro proměnnou
SET @FloatVal = 1132.,12345
–Převést desetinné číslo varchar
SELECT CONVERT(varchar(20), @FloatVal) JAKO ConvertedValue DO TestConvertedTable
— Analyzujte dočasné tabulky
SELECT TABLE_NAME,JMÉNO_SLOUPCE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
Z INFORMATION_SCHEMA.SLOUPCE, KDE TABLE_NAME=’TestConvertedTable‘
|
Převést Peníze na Varchar
SQL Server peníze datového typu pomáhá k ukládání peněžních hodnot., Můžeme definovat peněžní hodnoty předchází symbol měny však SQL Server neukládá symboly měny nebo všechna data, která souvisí s symbol měny. V následujícím dotazu převedeme datový typ peněz na varchar a použijeme také parametr stylu funkce SQL convert. Pomocí parametru styl můžeme určit oddělovače čárky a délku pravé desetinné číslice. Následující graf ukazuje hodnotu parametru styl a výstup funkce SQL CONVERT.,
Value |
Style Parameter |
Comma Delimiter |
Right decimal digit |
Output |
no |
||||
yes |
4,936.,56 |
|||
Převod Float a Reálný, aby Varchar
Plovák a reálné datové typy jsou typy přibližné číselná data v SQL Serveru a to znamená, že tyto datové typy neskladujte přesné hodnoty. Ukládají velmi úzkou aproximaci uložené hodnoty. Nyní vysvětlíme přibližné početí číselného typu dat., V následujícím dotazu vytvoříme tabulku, která má dva sloupce a datové typy těchto sloupců jsou float a real a poté vložíme některé číselné hodnoty. Ve skutečnosti jsme očekávali dvě číslice v tabulce, ale skutečný a plovoucí datový typ ukládá nejbližší hodnoty očekávaným hodnotám.
níže uvedené tabulce je citoval z Microsoft Docs a tato tabulka vysvětluje konverze styl float a real datové typy pro textové údaje.,
Tip: Vědecká notace je speciální metoda pro vyjádření velmi velkého počtu nebo malých čísel většinou používaných ve vědě.
Hodnota |
Výstupní |
0 (výchozí) |
maximálně 6 číslic. Používá se ve vědecké notaci, je-li to vhodné. |
vždy 8 číslic. Vždy se používá ve vědecké notaci. |
|
vždy 16 číslic. Vždy se používá ve vědecké notaci. |
|
vždy 17 číslic. Použijte pro bezztrátovou konverzi., S tímto stylem je zaručeno, že každý odlišný float nebo skutečná hodnota převede na zřetelný řetězec znaků. |
nyní ukážeme příklad, který zahrnuje všechny styly převodu dat podle této tabulky.
jak vidíte výše, sada výsledků ukazuje, že parametr styl mění výstup funkce SQL CONVERT.
převést datum/čas na Varchar
formáty data/času se mohou lišit podle nastavení národního prostředí, a proto požadujeme, aby různé formáty představovaly datum / čas., Představte si, že máte aplikaci, a různých zemích uživatelé používat tuto aplikaci, takže pokud se někdo připojí tuto aplikaci v Usa, budete muset představují datum, měsíc/den/rok formát. Na druhé straně, jiný uživatel připojí tuto aplikaci ve Velké Británii a musíte reprezentovat formát data jako formát den/měsíc/rok. V tomto případě musíme určit datum / čas představující styl podle nastavení místního data/času. sp_helplanguage uložená procedura vrací Podporované jazyky s podrobnými informacemi v SQL Serveru.,
kromě toho, můžeme určit jazyk pro uvedené zasedání a tímto způsobem můžeme upravit datum/čas funkce pro konkrétní jazyk. V následujícím dotazu nastavíme jazyk na polštinu a pak uvidíme změnu názvu měsíce a dne podle polského národního prostředí.
Tip: Obecně platí, že pokud navrhnete nadnárodní databázi aplikací, vždy uložte čas UTC (koordinovaný univerzální čas) do jednoho sloupce, abyste se vyhnuli problémům s datem/časem v důsledku lokálních nastavení.,výsledek německé normy, můžeme použít následující dotaz:
1
|
SELECT GETDATE (), CONVERT(Varchar(50),GETDATE(),104)
|
V následující cheat stůl, můžete najít každém použití kombinace stylu parametr a celý výstup formátu SQL CONVERT (), funkce pro datum/čas dat znak konverze.,
ow, ukážeme tuto cheatovou tabulku se všemi kombinacemi pro funkci SQL GETDATE, abychom mohli zjistit Vliv parametru stylu na výstupy funkce SQL CONVERT.
Nyní, budeme zmínit některé body, které musíme zvážit, o datum/čas konverze provozu. Na začátku této části jsme hovořili o možnostech a nastaveních jazyka SQL Server, takže pokud změníme nastavení jazyka, ovlivní to některé výstupy stylu konverze data/času., V níže příklad, chceme převést výsledky z funkce GETDATE, takže toto nastavení přímo ovlivňuje zkrácený název měsíce SQL funkce CONVERT.
další úvaha je o ročním formátu. Za určitých okolností můžeme použít parametr stylu, který nevrací formát století, ale tento případ může způsobit některé matoucí situace. Například v následujícím vzorku máme dvě různá data a také tato data ukládají různé roky, avšak výstup funkce SQL CONVERT je podobný.,
TRY_CONVERT ()
funkce SQL TRY_CONVERT je pokročilá forma funkce SQL CONVERT. Hlavní výhodou funkce SQL TRY_CONVERT je ochrana před chybami převodu dat během provádění dotazu. Je možné, že můžeme zaznamenat chyby v procesu převodu dat pomocí tajné operace SQL kvůli nevhodným nebo špinavým datům. Funkce SQL TRY_CONVERT nám však umožňuje vyhnout se těmto typům chyb. Současně neexistují žádné syntaktické rozdíly mezi funkcemi SQL CONVERT a TRY_CONVERT., Funkce SQL TRY_CONVERT vrací hodnotu NULL, pokud konverze dat generuje chybu. V níže uvedeném příkladu se nejprve pokusíme převést hodnotu znaku na celé číslo pomocí funkce SQL CONVERT a tato operace vrátí chybu.,
1
|
SELECT CONVERT(INT,’AnyString‘) JAKO ConvertFunc
|
Na druhou stranu, pokud budeme používat SQL TRY_CONVERT funkce namísto SQL funkce CONVERT pro stejný dotaz vrátí hodnotu NULL.,
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., Doporučuji, abyste byli opatrní s převodem datového typu data / času, pokud je vaše databáze používána v různých zemích. Stejně tak formátování datových typů data / času je dalším důležitým bodem.
- Autora
- Poslední Příspěvky
většina jeho kariéry byla zaměřena na správu a vývoj databází SQL Serveru. Jeho současné zájmy jsou v oblasti správy databází a Business Intelligence. Najdete ho na LinkedIn.,
Zobrazit všechny příspěvky od Esat Erkec
- začínáme s SQL Programování – 3. února 2021
- Jak číst exekuční plán se všemi detaily – 28. ledna 2021
- SQL VYBERTE prohlášení TOP přehled a příklady – 25. ledna 2021
Napsat komentář