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