
U SQL-u, konverzija tipova podataka predstavlja proces pretvaranja jedne vrste podataka u drugu. Proces konverzije je koristan kada podaci nisu u formatu koji odgovara za analizu, kalkulaciju ili prikaz. SQL nudi nekoliko funkcija za eksplicitnu konverziju, dok se implicitna konverzija dešava automatski u određenim situacijama. Glavne funkcije za konverziju su CAST() i CONVERT().
Implicitna i Eksplicitna Konverzija
- Implicitna konverzija: SQL automatski konvertuje jedan tip podatka u drugi kada je to potrebno, poput konverzije INT u FLOAT pri aritmetičkim operacijama.
- Eksplicitna konverzija: Kada koristimo SQL funkcije kao što su CAST() ili CONVERT() da bismo ručno konvertovali podatke.
1. CAST() funkcija
CAST() je SQL standardna funkcija koja omogućava jednostavnu konverziju tipova podataka. Sintaksa je CAST(izraz AS tip_podatka).
Primer: Konverzija VARCHAR u INT.
SELECT CAST(‘123’ AS INT) AS Broj;

Rezultat: Vraća 123 kao celobrojnu vrednost.
Primer: Konverzija FLOAT u VARCHAR.
SELECT CAST(123.45 AS VARCHAR(10)) AS TekstualniBroj;

Rezultat: Vraća ‘123.45’ kao tekst.
2. CONVERT() funkcija
CONVERT() je slična funkcija koja takođe vrši konverziju tipova podataka, ali omogućava dodatne opcije, posebno pri radu sa datumima. Sintaksa je CONVERT(tip_podatka, izraz, [stil]).
Primer: Konverzija DATETIME u VARCHAR sa određenim formatom.
SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS FormatiraniDatum;

Rezultat: Vraća trenutni datum u formatu dd/MM/yyyy, npr. 11/11/2024.
Napomena: U ovom primeru, 103 označava stil formata datuma (britanski format dd/MM/yyyy).
Konverzija Datuma i Vremena
SQL takođe omogućava prilagođenu konverziju datuma u različite formate. Ovo je posebno korisno kod prikaza datuma u različitim stilovima.
Primer: Konverzija DATETIME u DATE (samo datum bez vremena).
SELECT CONVERT(DATE, GETDATE()) AS SamoDatum;

Rezultat: prikazuje samo datum, npr. 2024-11-11.
Primena Konverzije u Upitima
Konverzija tipova podataka je često potrebna u složenijim upitima gde različiti podaci moraju biti u istom formatu radi poređenja ili prikaza.
Primer: Filtriranje transakcija na osnovu godine transakcije (ekstrakcija godine kao INT).
SELECT *
FROM Orders
WHERE CAST(YEAR(Order_Date) AS INT) = 2023;

U ovom primeru, funkcija YEAR() izdvaja godinu iz datuma, dok CAST() osigurava da je vrednost u celobrojnom formatu.
Kombinovanje Konverzije sa Matematičkim Operacijama
Konverzija može biti korisna i kada želimo da radimo sa decimalama ili zaokružimo vrednosti.
Primer: Konverzija FLOAT u DECIMAL sa dve decimale.
SELECT CONVERT(DECIMAL(10, 2), 123.456) AS ZaokruzeniBroj;

Rezultat: Vraća 123.46, zaokruženo na dve decimale.
Prednosti i Oprez pri Konverziji
Konverzija podataka u SQL-u može biti izuzetno korisna, ali je važno paziti na sledeće:
- Gubitak podataka: Neke konverzije mogu rezultirati gubitkom podataka (npr. konverzija FLOAT u INT gubi decimalne vrednosti).
- Greške pri konverziji: Pokušaj konverzije neprikladnog teksta u broj može dovesti do grešaka (CONVERT() ili CAST() mogu vratiti grešku ako konverzija nije moguća).
Ovo su neki od najčešće korišćenih načina konverzije podataka u SQL-u, koji pomažu u preciznijem radu sa podacima i olakšavaju analizu i prikaz informacija u željenom formatu.