Funkcije za splitovanje stringova

Objavljeno: 27-11-2014 | Autor: Nenad Živković | Kategorija: Funkcije, T-SQL

Ознаке:, , , ,

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.