În acest articol, vom discuta si de a invata elementele de bază și toate detaliile despre SQL Server tip de date de conversie a operațiunilor și, de asemenea, vom revizui SQL CONVERTI și TRY_CONVERT built-in functii cu diverse probe. La început, vom explica și clarifica sintaxa funcției SQL CONVERT și apoi vom învăța cum putem face procesul de conversie a datelor numerice și data / ora tipuri de date la date de caractere.,
Implicit vs Explicit
procesul de schimbare a tipului de date al unei valori într-un alt tip de date este denumit conversie de tip de date și, de asemenea, aproape toate limbile de programare includ un tip de funcții sau funcționalități de conversie a datelor. Când ne întoarcem perspectiva la SQL Server pentru a discuta detalii despre operațiunile de conversie a datelor SQL, la început putem separa procesul de conversie a datelor în două părți; conversii implicite și explicite., Conversia implicită se face de către SQL Server pentru nevoile interne și puteți găsi, de asemenea, detalii suplimentare în articolul conversie implicită în SQL Server. Conversia explicită este efectuată în mod explicit de către un programator de baze de date sau administrator și, în același timp, acest proces de conversie se face cu ajutorul oricărei funcții de conversie a datelor. În acest articol, ne vom concentra în special pe funcția SQL CONVERT. Această funcție oferă un mijloc de a converti un tip de date la un alt tip de date specificat. La început, vom interpreta sintaxa funcției SQL CONVERT.,
Sintaxa
1
|
CONVERSIE (tip de date (lungime), expresie, stil)
|
data_type: Acest parametru definește ținta tip de date care urmează să fie convertite. data_type parametru poate lua aceste tipuri de date ca o intrare care sunt prezentate în lista de matrice de mai jos.
lungime: acesta este un parametru opțional care specifică lungimea tipului de date țintă., Valoarea implicită a acestui parametru este 30.
Expresie: acest parametru specifică valoarea pe care dorim să o convertim la un alt tip de date.
style: acesta este un parametru întreg care specifică stilul de ieșire al valorii convertite. Această valoare este mai utilă până în prezent formate de tip de date. acum, vom consolida aceste instrucțiuni teoretice cu diverse mostre practice.
conversia Float in Int
În acest exemplu, vom converti un tip de date float la întreg., În următoarea interogare, vom declara o variabilă că tipul de date este float și apoi vom folosi funcția SQL CONVERT pentru a converti valoarea float în întreg, astfel încât pentru aceasta vom efectua operația de conversie a datelor.,
1
2
3
4
5
6
|
–a Declara o variabila float
ATESTE @FloatVal CA Float
–Atribui o valoare float a variabilei
SET @FloatVal = 1132.,12345
–Converti valoare float la int
SELECTAȚI conversie(int, @FloatVal) CA ConvertedValue
|
Convert Float să Varchar
În acest exemplu, vom converti o valoare float să varchar valoare. Acest exemplu este foarte similar cu cel precedent, dar singura diferență este că vom converti valoarea float la varchar.,
1
2
3
4
5
6
|
–a Declara o variabila float
ATESTE @FloatVal CA Float
–Atribui o valoare float a variabilei
SET @FloatVal = 1132.,12345
–Convert float valoare varchar
SELECTAȚI conversie(varchar, @FloatVal) CA ConvertedValue
|
În exemplul următor, nu vom trimite nici o valoare pentru lungime parametru de SQL CONVERTI funcție atât de lungime parametru trebuie să fie setată la valoarea implicită. Așa cum am menționat deja în explicația de sintaxă a funcției SQL CONVERT, această valoare implicită este 30 și acum vom dovedi acest lucru., În următoarea interogare, vom crea un tabel temporar și vom introduce valoarea convertită în acest tabel și apoi vom analiza structura de date a acestui tabel.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE DACĂ EXISTĂ TestConvertedTable
–a Declara o variabila float
ATESTE @FloatVal CA Float
–Atribui o valoare float a variabilei
SET @FloatVal = 1132.,12345
–Convert float valoare varchar
SELECTAȚI conversie(varchar, @FloatVal) CA ConvertedValue ÎN TestConvertedTable
— Analiza tabel temporar
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
DIN INFORMATION_SCHEMA.,COLOANE UNDE TABLE_NAME=’TestConvertedTable’
|
după Cum puteți vedea în imaginea de mai sus, float tip de date a fost convertit la varchar valoare și nu am stabilit lungimea parametru atât de SQL Server aplică valoarea implicită de lungimea parametru de 30 de ani.
acum, vom seta parametrul lungime AL FUNCȚIEI SQL CONVERT și apoi vom reverifica lungimea tipului de date varchar.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE DACĂ EXISTĂ TestConvertedTable
–a Declara o variabila float
ATESTE @FloatVal CA Float
–Atribui o valoare float a variabilei
SET @FloatVal = 1132.,12345
–Convert float valoare varchar
SELECTAȚI conversie(varchar(20), @FloatVal) CA ConvertedValue ÎN TestConvertedTable
— Analiza tabel temporar
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
DIN INFORMATION_SCHEMA.COLOANE UNDE TABLE_NAME=’TestConvertedTable’
|
Converti Bani pentru a Varchar
SQL Server bani tip de date ajută pentru a stoca valori monetare., Putem defini valorile monetare precedate de un simbol valutar, cu toate acestea SQL Server nu stochează simbolurile valutare sau orice date care sunt legate de simbolul valutar. În următoarea interogare, vom converti tipul de date de bani în varchar și vom folosi, de asemenea, parametrul de stil al funcției SQL convert. Cu ajutorul parametrului de stil, putem determina delimitatorii de virgule și lungimea cifrei zecimale drepte. Următoarea diagramă arată valoarea parametrului de stil și ieșirea funcției SQL CONVERT.,
Value |
Style Parameter |
Comma Delimiter |
Right decimal digit |
Output |
no |
||||
yes |
4,936.,56 |
|||
nu |
Convert Float și Reale pentru Varchar
Float real și tipuri de date sunt aproximative tipuri de date numerice în SQL Server și aceasta înseamnă că aceste tipuri de date nu stoca valorile exacte. Ele stochează o aproximare foarte apropiată a valorii stocate. Acum, vom explica concepția aproximativă a tipului de date numerice., În următoarea interogare, vom crea un tabel care are două coloane, iar tipurile de date ale acestor coloane sunt float și real și apoi vom introduce câteva valori numerice. De fapt, ne-am așteptat la două cifre în tabel, cu toate acestea, tipul de date real și float stochează cele mai apropiate valori față de valorile așteptate.
tabelul de mai jos este citat din Microsoft Docs și acest tabel explică stilul de conversie a tipurilor de date float și reale la date textuale.,
sfat: notația științifică este o metodă specială în exprimarea unui număr foarte mare sau a unui număr mic folosit mai ales în știință.
Valoare |
Ieșire |
0 (implicit) |
Un maxim de 6 cifre. Utilizat în notația științifică, atunci când este cazul. |
întotdeauna 8 cifre. Folosit întotdeauna în notația științifică. |
|
întotdeauna 16 cifre. Folosit întotdeauna în notația științifică. |
|
întotdeauna 17 cifre. Utilizați pentru conversie fără pierderi., Cu acest stil, fiecare float distinct sau valoare reală este garantat pentru a converti la un șir de caractere distincte. |
acum să demonstrăm un exemplu care include toate stilurile de conversie a datelor conform acestui tabel.
după cum puteți vedea în cele de mai sus, setul de rezultate arată că parametrul de stil modifică ieșirea funcției SQL CONVERT.
conversia datei/orei în Varchar
formatele dată/oră pot varia în funcție de setările locale și din acest motiv avem nevoie de diferite formate pentru a reprezenta data / ora., Imaginați-vă că aveți o aplicație și utilizatorii din diferite țări folosesc această aplicație, deci dacă cineva conectează această aplicație în SUA, trebuie să reprezentați data ca format Lună/Zi/An. Pe de altă parte, un alt utilizator conectează această aplicație în Marea Britanie și trebuie să reprezentați formatul datei ca format Zi/Lună/An. În acest caz, trebuie să determinăm data/ora reprezentând stilul în funcție de setarea datei/orei locale. sp_helplanguage procedura stocată returnează limbile acceptate cu informații detaliate în SQL Server.,
În plus, putem determina limba pentru sesiunea declarată și în acest fel putem adapta funcțiile dată/oră la o anumită limbă. În următoarea interogare, vom seta limba în poloneză și apoi putem vedea schimbarea numelui lunii și a zilei în funcție de limba poloneză.
sfat: ca regulă generală, dacă veți proiecta o bază de date multinațională de aplicații, stocați întotdeauna timpul UTC (timp Universal coordonat) într-o singură coloană, astfel încât să puteți evita problemele de dată / oră din cauza setărilor locale.,rezultatul German standard, putem folosi următoarea interogare:
1
|
SELECTAȚI GETDATE() CA ,pentru a CONVERTI(Varchar(50),GETDATE(),104) CA
|
În următoarele ieftin de masă, puteți găsi fiecare utilizare combinație de stil parametru și întreg format de ieșire de SQL CONVERTI () funcție pentru data/timp a datelor cu caracter conversii.,
ow, vom demonstra acest tabel ieftin cu toate combinațiile pentru funcția SQL GETDATE, astfel încât să putem da seama influența parametrului de stil la ieșirile funcției SQL CONVERT.
Acum, vom menționa câteva aspecte pe care trebuie să ia în considerare despre data/ora operație de conversie. La începutul acestei secțiuni, am vorbit despre opțiunile și setările de limbă SQL Server, deci dacă schimbăm setarea de limbă, aceasta afectează unele dintre ieșirile stilului de conversie dată/oră., În exemplul de mai jos, dorim să convertim rezultatele din funcția GETDATE, astfel încât această setare să afecteze în mod direct numele de lună abreviat al funcției SQL CONVERT.
o altă considerație este despre formatul anului. În anumite circumstanțe, putem folosi parametrul de stil care nu returnează formatul secolului, dar acest caz poate provoca unele situații confuze. Cum ar fi în următorul eșantion, avem două date diferite și, de asemenea, aceste date stochează ani diferiți, însă ieșirea funcției SQL CONVERT este similară.,
TRY_CONVERT ()
SQL TRY_CONVERT funcția este o formă avansată de SQL funcție de conversie. Principalul avantaj al funcției SQL TRY_CONVERT este protejarea împotriva erorilor de conversie a datelor în timpul executării interogării. Este posibil să putem întâmpina erori la procesul de conversie a datelor cu operațiunea sub acoperire SQL din cauza datelor necorespunzătoare sau murdare. Cu toate acestea, funcția SQL TRY_CONVERT ne permite să evităm aceste tipuri de erori. În același timp, nu există diferențe de sintaxă între funcțiile SQL CONVERT și TRY_CONVERT., Funcția SQL TRY_CONVERT returnează valoarea nulă dacă conversia datelor generează o eroare. În exemplul de mai jos, la început vom încerca să convertim valoarea caracterelor într-un număr întreg prin intermediul funcției SQL CONVERT și această operație va returna o eroare.,
1
|
SELECTAȚI conversie(INT,’AnyString’) CA ConvertFunc
|
Pe de altă parte, dacă vom folosi SQL TRY_CONVERT funcție în loc de SQL funcție de conversie pentru aceeași interogare va returna valoarea 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., Vă recomand să fiți atenți la conversia tipului de date data/ora Dacă baza dvs. de date este utilizată în diferite țări. De asemenea, formatarea tipurilor de date data/ora este un alt punct important.
- Autor
- Mesajele Recente
Vezi toate posturile de Esat Erkec
- Obtinerea a început cu Programare SQL – 3 februarie 2021
- Cum de a citi un plan de execuție cu toate detaliile – 28 ianuarie 2021
- SQL SELECT TOP declarație generală și exemple – 25 ianuarie 2021
Lasă un răspuns