String funkcije (1. deo)
Objavljeno: 27-05-2014 | Autor: Miloš Milenković | Kategorija: Funkcije, T-SQL
Ознаке: MIN
2
SQL Server nudi veliki broj ugrađenih funkcija za rukovanje stringovima. Neke od njih su dobro poznate i često korišćene, dok su neke manje poznate ili su uvedene u novijim verzijama SQL servera. Predstavićemo sve string funkcije kroz nekoliko članaka. U prvom vas podsećamo na one najpoznatije i najkorišćenije.
SUBSTRING je funkcija koja kao rezultat vraća deo stringa koji prosledimo kao prvi parametar. Sintaksa je SUBSTRING(string, početak, dužina) gde prvi parametar string predstavlja bilo koji niz karaktera tipa char/varchar/text, nchar/nvarchar/ntext ili binary/varbinary/image. Tip podatka u kome ćemo dobiti rezultat zavisi od tipa ovog ulaznog parametra. Ukoliko ulazni parametar ima jedan od tipova iz prve grupe (char/varchar/text), rezultat je tipa varchar. Ako kao ulazni parametar prosledimo string tipa nchar/nvarchar/ntext, rezultat ćemo dobiti kao nvarchar, dok za binary/varbinary/image dobijamo varbinary. Drugi parametar označava poziciju u prvom parametru od koje počinje odsecanje karaktera, a treći parametar predstavlja dužinu željenog dela stringa koji smo prosledili kao prvi parametar.
Na osnovu opisanog ponašanja funkcije možemo zaključiti da je rezultat sledećeg upita:
SELECT SUBSTRING('KEFALO',2,3);
niz karaktera EFA.
LEFT i RIGHT su funkcije veoma slične prethodnoj, razlika je u tome što se prilikom poziva izostavlja parametar koji označava početak pošto je on podrazumevan. Dakle, sintaksa je LEFT(string, dužina), odnosno RIGHT(string, dužina). Funkcija LEFT vraća niz prvih n karaktera iz stringa, gde je n dužina koju prosleđujemo kao drugi parametar. Analogno tome, funkcija RIGHT vraća niz poslednjih n karaktera iz stringa, gde je n dužina koju prosleđujemo kao drugi parametar.
Sledeća dva upita:
SELECT LEFT('KEFALO',3);
SELECT RIGHT('KEFALO',3);
vraćaju KEF i ALO kao rezultate.
Funkcije LEN i DATALENGTH (koja nije isključivo string funkcija i može se primeniti i nad drugim tipovima podataka) smo već detaljno opisali u jednom od prethodnih članaka (Izračunavanje dužine stringa korišćenjem funkcija LEN() i DATALENGTH()).
CHARINDEX nam omogućava da pronađemo poziciju jednog stringa u okviru drugog stringa. Sintaksa za upotrebu ove funkcije je CHARINDEX(string koji se traži, string koji se pretražuje [,početak]). Prvi parametar je karakter ili niz karaktera čiju poziciju tražimo u drugom parametru. Treći parametar nije obavezan i označava poziciju od koje se počinje pretraga. Ukoliko se prilikom poziva funkcije ne prosledi treći parametar, njegova podrazumevana vrednost je 1, odnosno početak stringa.
Nakon izvršavanja upita:
SELECT CHARINDEX('L', 'SQLKEFALO');
SELECT CHARINDEX('L', 'SQLKEFALO', 5);
rezultati su 3 i 8 respektivno.
LTRIM i RTRIM su funkcije kojima se sa početka ili kraja stringa uklanjaju prazna mesta. Sintaksa je veoma jednostavna: LTRIM(string) i RTRIM(string).
Kroz sledeće upite se može videti upotreba opisanih funkcija, a posebno je zanimljiva njihova kombinacija koja se u praksi veoma često koristi.
SELECT LTRIM(' KEFALO');
SELECT RTRIM('KEFALO ');
SELECT LTRIM(RTRIM(' KEFALO '));
Sva tri upita će kao rezultat vratiti string KEFALO bez praznih mesta na početku i na kraju.
REPLACE funkcijom se u okviru stringa jedan string menja drugim. Ukoliko ovo zvuči zbunjujuće, najbolje da prvo pogledamo sintaksu, a zatim i primer. Sintaksa je: REPLACE (osnovni string, string koji se menja, string koji je zamena). Dakle, u okviru osnovnog stringa se traži string koji želimo da zamenimo i menja se željenim stringom. Nakon primera će sve biti jasnije. Rezultat upita
SELECT REPLACE('SQLKEFALO','KEF','SMET');
je string SQLSMETALO.
Funkcijom UPPER se mala slova u stringu pretvaraju u velika, dok se funkcijom LOWER velika slova pretvaraju u mala. Sintaksa je u ovom slučaju veoma jednostavna: UPPER(string) i LOWER(string).
Sledeći upiti:
SELECT UPPER('SqLKefaLO');
SELECT LOWER('SqLKefaLO');
kao rezultat daju stringove SQLKEFALO i sqlkefalo respektivno.
[…] jednom od prethodnih članaka (String funkcije (1. deo)) smo opisali neke od najčešće korišćenih funkcija za rukovanje stringovima. Ovaj članak […]
[…] sada smo u dva članka (String funkcije (1. deo) i String funkcije (2. deo)) opisali većinu funkcija za rukovanje stringovima koje SQL server nudi. […]