Re: LIKE or SIMILAR TO

Klaus Kaisersberger <[email protected]> Mon, 18 Apr 2016 20:19:13 +0200
Newsgroups gmane.comp.db.postgresql.german
Message-ID <[email protected]>
Muss es pgplsql sein? Wenn nicht: Eine SQL-Funktion (language sql) täte es auch, die auf folgendem basiert:

select
    upper(regexp_replace(eingabe.ws,E'.*(ws-\\d+).*','\1','i')) workshop
from
    tabelle eingabe
where
    eingabe.ws~E'(?i)ws-\\d+';

Diese könnte auch gleich die gesamte Tabelle verarbeiten.

----
Klaus



> To: [email protected]
> From: [email protected]
> Subject: [pgsql-de-allgemein] LIKE or SIMILAR TO
> Date: Mon, 18 Apr 2016 19:28:00 +0200
>
> Hallo,
>
> ich habe eine Anfängerfrage:
>
> In einem Feld
> ws varchar(50)
> sammle ich Benutzer-Eingaben, die keiner Formatierung genügen müssen.
> (Es sind Teilnehmer einer Tagung, die über ein Formular ihren
> Workshop-Wunsch angeben.)
> Z.B.
> WS-01, Ökologie, Lieschen Müller
> Lieschen Müller: Ökologie (WS-01)
> Nun möchte ich eine plpgsql-Funktion fkt_ws_norm schreiben, die mir den
> ersten Eintrag in ws der Art
> WS-01
> WS-02
> ...
> WS-99
> (gemeint ist "Workshop Nr. 01 bis 99")
> aus ws sucht "normiert" zurückgibt. Die Funktion soll z.B. folgende
> Fälle tolerieren:
> ws-01 --> WS-01
> ws 01 --> WS-01
> WS.01 --> WS-01
> WS01 --> WS-01
> Also etwa so:
>
> create or replace
> function fkt_ws_norm(ws varchar(50)) returns varchar(6) as $$
> begin
> ws_norm = "erster Eintrag in ws der Art WS-##"
> return upper(ws_norm);
> end;
> $$ language plpgsql;
>
> Wie macht man sowas?
>
> Beste Grüße und danke für Hilfe
> Ulrich
>
> --
> Ulrich Goebel
> Paracelsusstr. 120, 53177 Bonn
>
>
> --
> Sent via pgsql-de-allgemein mailing list ([email protected])
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-de-allgemein
 		 	   		  

-- 
Sent via pgsql-de-allgemein mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein