Funkcije za splitovanje stringova
Objavljeno: 27-11-2014 | Autor: Nenad Živković | Kategorija: Funkcije, T-SQL
Ознаке: CTE, Splitting, Tally, While, XML
0
Pre nekog vremena smo u dva članka (1, 2) opisali proces konkatenacije, odnosno spajanja vrednosti iz kolone u jedan string. Ovog puta prikazaćemo obrnut proces – kako iz jednog csv stringa dobiti sve pojedinačne vrednosti. Kako je ovaj proces malo složeniji i za pojedinačni string treba da vrati tabelu, obično se u te svrhe koriste table-valued funkcije, tzv. splitting funkcije.
Odmah da napomenemo da je najispravnija varijanta za splitting funkciju korišćenje CLR. Međutim, to ćemo ostaviti za neki naredni članak, a u ovom ćemo opisati nekoliko T-SQL rešenja. Njih postoji dosta, a mi smo izabrali pet koje smo prilagodili i adaptirali tako da sve funkcije imaju iste ulazne parametre i vraćaju iste rezultate:
- Prvi ulazni parametar je string koji se splituje, u NVARCHAR(MAX) formatu
- Drugi ulazni parametar je delimiter, koji i sam može imati do 255 znakova
- Ukoliko delimiter nije prosleđen koristi se zarez (,)
- Rezultat funkcije je tabela sa dve kolone: RedniBroj i Element
- Povratni elementi su tipa NVARCHAR(4000)
- Blanko znakovi na početku svakog elementa se uklanjaju
While petlja
Prvo rešenje koje ćemo opisati je ujedno i ono koje se najčešće koristi. Odseca se prvi element, a zatim u while petlji ponavlja proces nad ostatkom stringa.