String funkcije (1. deo)

Objavljeno: 27-05-2014 | Autor: Miloš Milenković | Kategorija: Funkcije, T-SQL

Ознаке:

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.

Code: [Select]
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.
String funkcije

Komentari (2)

[…] 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. […]