[tsql] funkcja laczaca stringi
Sławek Mróz - 03-07-2007 00:04
[tsql] funkcja laczaca stringi
Witam!
Potrzebuje sobie napisac funcyjke dla MS SQL Servera laczaca dane z pola typu varchar w jeden string, rozdzielone wskazanym separatorem. Idealnie byloby, gdyby dzialala na podobnej zasadzie, jak systemowe typu AVG() czy SUM().
Czyli:
Mamy tabelke o nazwie imiona zamierajaca kolumne "imie" z wartosciami: Tadek, Jurek, Bronek.
I wywolanie takiej funkcji odbywaloby sie nastepujaco: np select funcja(imie,';') from imiona
i w efekcie zwrocony bylby taki string:
Tadek;Jurek;Bronek
Czy ktos probowal robic takie rzeczy i moze podzielic sie wskazowkami?
Dzieki z gory Pozdrawiam Slawek
Grzegorz Danowski - 03-07-2007 00:04
"Sławek Mróz" <slmroz@_wytnij_wp.pl> wrote in message news:f6bl8e$p9h$1@inews.gazeta.pl... > Potrzebuje sobie napisac funcyjke dla MS SQL Servera laczaca dane z pola > typu varchar w jeden string, rozdzielone wskazanym separatorem. Idealnie > byloby, gdyby dzialala na podobnej zasadzie, jak systemowe typu AVG() czy > SUM(). > > Czyli: > > Mamy tabelke o nazwie imiona zamierajaca kolumne "imie" z wartosciami: > Tadek, Jurek, Bronek. > > I wywolanie takiej funkcji odbywaloby sie nastepujaco: > np > select funcja(imie,';') from imiona > > i w efekcie zwrocony bylby taki string: > > Tadek;Jurek;Bronek > > Czy ktos probowal robic takie rzeczy i moze podzielic sie wskazowkami?
Np.:
Declare @Result Varchar(Max)
Select @Result = Case When @Result Is Null Then imie Else @Result + ';' + imie End From imiona Select @Result
-- Pozdrawiam Grzegorz
Grzegorz Danowski - 03-07-2007 00:04
"Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> wrote in message news:f6bv7q$a77$1@inews.gazeta.pl... >> Potrzebuje sobie napisac funcyjke dla MS SQL Servera laczaca dane z pola >> typu varchar w jeden string, rozdzielone wskazanym separatorem. Idealnie
> Np.: > > Declare @Result Varchar(Max) > > Select @Result = Case When @Result Is Null Then imie > Else @Result + ';' + imie End > From imiona
Albo nieco krócej: Select @Result = IsNull(@Result + ';','') + imie From imiona -- Pozdrawiam Grzegorz
Sławek Mróz - 04-07-2007 00:01
> >> Np.: >> >> Declare @Result Varchar(Max) >> >> Select @Result = Case When @Result Is Null Then imie >> Else @Result + ';' + imie End >> From imiona > > Albo nieco krócej: > Select @Result = IsNull(@Result + ';','') + imie > From imiona
Ooo, to mi sie podoba, bardzo zgrabne :-)
Dzieki
Pozdrawiam Slawek
Sławek Mróz - 04-07-2007 00:01
>>> Declare @Result Varchar(Max) >>> >>> Select @Result = Case When @Result Is Null Then imie >>> Else @Result + ';' + imie End >>> From imiona >> >> Albo nieco krócej: >> Select @Result = IsNull(@Result + ';','') + imie >> From imiona > > Ooo, to mi sie podoba, bardzo zgrabne :-)
Mam jeszcze pytanko: A wiecie moze, jak ubrac to w zgrabna, elastyczna funkcyjke, tak zeby mozna bylo uzywac jej do roznych kolumn i roznych tabel (wlasnie na wzor funkcji systemowych)?
Pozdr Slawek
Grzegorz Danowski - 04-07-2007 00:01
"Sławek Mróz" <slmroz@_wytnij_wp.pl> wrote in message news:f6csea$p4c$1@inews.gazeta.pl... > A wiecie moze, jak ubrac to w zgrabna, elastyczna funkcyjke, tak zeby > mozna bylo uzywac jej do roznych kolumn i roznych tabel (wlasnie na wzor > funkcji systemowych)?
Jeśli masz wersję 2005, to może warto utworzyć własną funkcję agregującą w c# (poszukaj na google hasła clr user defined aggregates). Opis tego sposobu, a także innych bardziej tradycyjnych znajdziesz tutaj: http://www.projectdmx.com/tsql/rowconcatenate.aspx. -- Pozdrawiam Grzegorz
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Photoshop CS2 - funkcje, =?ISO-8859-2?Q?kt=F3rych_si=EA_nie_?==?ISO-8859-2?Q?spodziewasz=2E=2E=2E?=
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
postgres - ile razy wykona =?ISO-8859-2?Q?si=EA_funkcja_w_?==?ISO-8859-2?Q?zapytaniu?=
[MySQL] Load data infile i =?ISO-8859-2?Q?u=BFycie_funkcji_r?==?ISO-8859-2?Q?eplace?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
=?iso-8859-2?q?Sybase_jak_wyci=B1gn=B1=E6_dane_generowane_prz ez_funkcje?=
=?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?=
[MySQL5] problem z zastosowanie funkcji, procedury w celu unikniecia powtórzeń kodu w zapytaniach
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|