PostgreSQL: Zamiana znaków 
 
PostgreSQL: Zamiana znaków
Zobacz wiadomo¶ci
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stan±ć na ludzkich my¶li piramidzie, / I przebić czołem przes±dów chmurę, / I być najwyższ± my¶l± wcielon±. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

PostgreSQL: Zamiana znaków



Adam W. - 22-02-2006 21:48
PostgreSQL: Zamiana znaków
  Witam!
Mam taki problem.
Potrzebuję w wyniku select podmienić znaki.
Otrzymuję jaki¶ tam ci±g i chcę w nim podmienić wszystkie polskie znaki na ich
odpowiedniki bez ogonków.
Np w stringu 'się' chciałbym mieć 'sie'.
Znalazłem funkcję replace(string, co_zmieniamy, na_co)
ale niestety działa tylko na pojedyńczych znakach.
Macie może jakie¶ pomysły?
Z góry dziękuję

Pozdrawiam
Adam W.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





max - 22-02-2006 21:48

  Adam W. napisał(a):
> Witam!
> Mam taki problem.
> Potrzebuję w wyniku select podmienić znaki.
> Otrzymuję jaki¶ tam ci±g i chcę w nim podmienić wszystkie polskie znaki na ich
> odpowiedniki bez ogonków.
> Np w stringu 'się' chciałbym mieć 'sie'.
> Znalazłem funkcję replace(string, co_zmieniamy, na_co)
> ale niestety działa tylko na pojedyńczych znakach.
> Macie może jakie¶ pomysły?
> Z góry dziękuję
>
> Pozdrawiam
> Adam W.
>
Dziwne bo w moim postgresql replace działa na tekstach
np.:

template1=# select replace( 'abcdefabcdef', 'cd', 'XX');

replace
--------------
abXXefabXXef
(1 row)




adamczyk05@poczta.onet.pl - 22-02-2006 21:48

  > > Witam!
> > Mam taki problem.
> > Potrzebuję w wyniku select podmienić znaki.
> > Otrzymuję jaki¶ tam ci±g i chcę w nim podmienić wszystkie polskie znaki na
ich
> > odpowiedniki bez ogonków.
> > Np w stringu 'się' chciałbym mieć 'sie'.
> > Znalazłem funkcję replace(string, co_zmieniamy, na_co)
> > ale niestety działa tylko na pojedyńczych znakach.
> > Macie może jakie¶ pomysły?
> > Z góry dziękuję
> >
> > Pozdrawiam
> > Adam W.
> >
> Dziwne bo w moim postgresql replace działa na tekstach
> np.:
>
> template1=# select replace( 'abcdefabcdef', 'cd', 'XX');
>
> * *replace
> --------------
> *abXXefabXXef
> (1 row)
Zaproponowany przez Ciebie zapis powoduje, że w stringu szukany jest ci±g 'cd'
i zamieniany na ci±g 'XX'.
Ja natomiast poszukuję rozwi±zania innego.
Chodzi mi aby zamienić 'Tre¶ć' na 'Tresc' z małym zastrzeżeniem.
Nie wiem jaki string mam do zamiany.

Dziękuję za pomoc.

Pozdrawiam
Adam

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




max - 22-02-2006 21:48

  > Dziwne bo w moim postgresql replace działa na tekstach
> np.:
>
> template1=# select replace( 'abcdefabcdef', 'cd', 'XX');
>
> replace
> --------------
> abXXefabXXef
> (1 row)

CREATE OR REPLACE FUNCTION bez_pl(text)
RETURNS text AS
$BODY$
DECLARE
v_str text;
BEGIN
v_str = replace($1,'ˇ','A');
v_str = replace(v_str,'Ę','E');
v_str = replace(v_str,'Ć','C');
v_str = replace(v_str,'Ż','Z');
v_str = replace(v_str,'¬','Z');
v_str = replace(v_str,'Ó','O');
v_str = replace(v_str,'Ł','L');
...
...
return v_str;
end
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

Ale to jest taka bardzo łopatologiczna metoda łańcuch jest kilkakrotnie
czytany

Mariusz





Noel - 22-02-2006 21:48

  Użytkownik max napisał:

>> Dziwne bo w moim postgresql replace działa na tekstach
>> np.:
>>
>> template1=# select replace( 'abcdefabcdef', 'cd', 'XX');
>>
>> replace
>> --------------
>> abXXefabXXef
>> (1 row)
>
>
> CREATE OR REPLACE FUNCTION bez_pl(text)
> RETURNS text AS
> $BODY$
> DECLARE
> v_str text;
> BEGIN
> v_str = replace($1,'ˇ','A');
> v_str = replace(v_str,'Ę','E');
> v_str = replace(v_str,'Ć','C');
> v_str = replace(v_str,'Ż','Z');
> v_str = replace(v_str,'¬','Z');
> v_str = replace(v_str,'Ó','O');
> v_str = replace(v_str,'Ł','L');
> ...
> ...
> return v_str;
> end
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> Ale to jest taka bardzo łopatologiczna metoda łańcuch jest kilkakrotnie
> czytany
>

Może jest odpowiednik translate?

np:

translate('się','abcdefghij...z±ćę...ĽˇĆ..¬','abcd efghij...zace...zA..Z');

--
Tomek "Noel" B.




Adam W. - 22-02-2006 21:48

  > > Dziwne bo w moim postgresql replace działa na tekstach
> > np.:
> >
> > template1=# select replace( 'abcdefabcdef', 'cd', 'XX');
> >
> > * *replace
> > --------------
> > *abXXefabXXef
> > (1 row)
>
> CREATE OR REPLACE FUNCTION bez_pl(text)
> * RETURNS text AS
> $BODY$
> DECLARE
> * v_str text;
> BEGIN
> * v_str = replace($1,'ˇ','A');
> * v_str = replace(v_str,'Ę','E');
> * v_str = replace(v_str,'Ć','C');
> * v_str = replace(v_str,'Ż','Z');
> * v_str = replace(v_str,'¬','Z');
> * v_str = replace(v_str,'Ó','O');
> * v_str = replace(v_str,'Ł','L');
> *...
> * ...
> * return v_str;
> end
> $BODY$
> * LANGUAGE 'plpgsql' VOLATILE;
>
> Ale to jest taka bardzo łopatologiczna metoda łańcuch jest kilkakrotnie
> czytany
>
> Mariusz
Serdeczne dzięki za pomoc.

Pozdrawiam
Adam W.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Adam Buraczewski - 28-02-2006 13:12

  Adam W. <adamczyk05@poczta.onet.pl> wrote:
> Otrzymuję jaki¶ tam ci±g i chcę w nim podmienić wszystkie polskie znaki na ich
> odpowiedniki bez ogonków.
> Np w stringu 'się' chciałbym mieć 'sie'.
> Znalazłem funkcję replace(string, co_zmieniamy, na_co)
> ale niestety działa tylko na pojedyńczych znakach.
> Macie może jakie¶ pomysły?

To ja mam jeszcze inny pomysł: spróbuj funkcji to_ascii():

select to_ascii('±ćęłń󶼿 ˇĆĘŁŃÓ¦¬Ż');
to_ascii
---------------------
acelnoszz ACELNOSZZ
(1 row)

Jest we wszystkich nowszych wersjach Postgresa.

Pozdrawiam!

--
Adam Buraczewski <adamb (at) nor (dot) pl> * Linux user #165585
GCS/TW d- s-:+>+:- a C+++(++++) UL++++$ P++ L++++ E++ W+ N++ o? K w--
O M- V- PS+ !PE Y PGP+ t+ 5 X+ R tv- b+ DI D G++ e+++>++++ h r+>++ y?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • latwa-kasiora.pev.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com