Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SPLIT funkcija nad kolonom

[es] :: MS SQL :: SPLIT funkcija nad kolonom

[ Pregleda: 1750 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sule99
student

Član broj: 227708
Poruke: 93
*.dsl.iskon.hr.



+1 Profil

icon SPLIT funkcija nad kolonom17.12.2009. u 08:40 - pre 174 meseci
Pozdrav!

Pročitajte do kraja pitanje. Da li netko zna kako mogu napraviti split funkciju koja će raditi razdvajanje stringa sa zadanim delimiterom. Ja sam pronašao na netu i isprobao čitavni niz funkcija za splitanje, ali one sve rade split na retku (jednom zapisu, odnosno stringu koji dajem kao ulazni parametar)pa moram koristit kursor ili/i brojač da obradim cijelu kolonu. Meni treba split funkcija koja će primiti cijelu kolonu i na njoj se izvršiti, ,bez kursora i brojača. Imam jako puno zapisa u tablici i ako radim sa kursorima i brojačima treba mi preko 6 sati da se procedura izvrši a želio bi taj proces ubrzati.

Unaprijed hvala!
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
82.117.202.*

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: SPLIT funkcija nad kolonom17.12.2009. u 10:36 - pre 174 meseci
Nisam siguran sta hoces da bude rezultat tog tvog upita?

Ako hoces da podelis kolonu na dve (ili vise ako znas tacno kako ih imas) sa zadatim delimiterom (primer sa neta):

Code:

declare @name varchar(20)
set @name = 'john?doe'

select left(@name, charindex('?', @name)-1), right(@name,
len(@name)-charindex('?', @name))


ako ovo ne resava tvoj problem, budi malo precizniji sta hoces da bude rezultat.
Every hamster has his day.
 
Odgovor na temu

sule99
student

Član broj: 227708
Poruke: 93
*.teched.hr.



+1 Profil

icon Re: SPLIT funkcija nad kolonom17.12.2009. u 13:00 - pre 174 meseci
primjer bi bio


prva kolona| druga kolona| treca kolona| kolonaID(ona mi treba jer preko nje dohvaćam svaki redak u kursoru)
a,b,c,d,e,f | 1,2,3,4,5,6 | x,y,z,q,w,ž | 1
k,j,u | 8,9,0 | t,z,r | 2



ja sad trebam dobiti ovo s tom SPLIT funkcijom:

kolona1| kolona2| kolona3| kolonaID
a| 1| x| 1
b| 2| y| 1
c| 3| z| 1
d| 4| q| 1
e| 5| w| 1
f| 6| ž| 1
k| 8| t| 2
j| 9| z| 2
u| 0| r| 2


...i tako redom redak po redak i insert u istu tablicu (ovo je bio primjer s dva retka, a imam ih oko 200 000). I sve funkcije s net-a koje rade split kad ih preuredim da splitaju 3 kolone odjednom,treba preko 6 sati da završe posao.


U međuvrmenu sam riješio problem tako da sam uvezao CLR funkciju pisanu u C# koja prima tri ulazna stringa (npr. a,b,c,d,e,f je prvi string, 1,2,3,4,5,6 je drugi string i x,y,z,q,w,ž je treći ulazni string) i radi ovo što meni treba. naravno opet koristim kursor koji preko IDkolone dohvaća redak po redak i izvršava CLR funkciju. Zanimljivo je to što CLR funkcija obradi svih 200 000 redaka za 6 minuta što je neusporedivo brže od funkcija pisanih u T-SQL.

Hvala na odgovoru, ovo je dosta komplicirano bilo za objasniti pa zato nisam bio potpuno jasan prvi put. Nadam se da je sada detaljno opisan i problem, a i rješenje do kojega sam došao, možda nekome nekada zatreba.

Pozz
 
Odgovor na temu

[es] :: MS SQL :: SPLIT funkcija nad kolonom

[ Pregleda: 1750 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.