Re: Selection ganzer Worte per regexp Suche
Boris Skegin <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <CAB2jy+01jDAh4Dr5cmonazv2abnp4zacERrSC6CuATH+Lsj5DA@mail.gmail.com> |
wie wäre' mit :
SELECT * FROM test WHERE data in ('abc,' ,' abc,',' abc') ;
Am 11.07.13 schrieb Andreas Tille <[email protected]>:
> Hallo,
>
> ich möchte aus folgender Tabelle
>
> CREATE table test (
> row int,
> data text
> ) ;
>
> INSERT INTO test VALUES ( 1, 'abc' );
> INSERT INTO test VALUES ( 2, 'abc, xyz' );
> INSERT INTO test VALUES ( 3, 'uvw, abc, xyz' );
> INSERT INTO test VALUES ( 4, 'xabc' );
> INSERT INTO test VALUES ( 5, 'yabcz' );
>
> alls die Zeilen heraussuchen, in denen das ganze Wort 'abc' vorkommt
> aber eben nicht sowas wie 'xabc'. Mit anderen Worten, die Abfrage
> soll nur die Zeilen 1, 2 und 3 enthalten, das heißt
>
> SELECT * FROM test WHERE data like '%abc%' ;
>
> liefert zu viel. Ich habe also mit regexp experimentiert und dachte
> sowas wie
>
> SELECT * FROM test WHERE data ~ '\babc\b' ;
>
> wäre eine gute Idee - das liefert aber keine Zeile. Selbst
>
> SELECT * FROM test WHERE data ~ '.*\babc\b.*' ;
>
> liefert nichts - scheinbar ist '\b' (Wortgrenze) nicht implementiert.
> Wie kann man die betreffenden Zeilen geschickt herausfiltern?
>
> Bemerkung: In meiner Anwendung werden die Worte immer durch ', '
> getrennt, wenn es mehrere sein sollten. Eventuell kann man die also in
> ein Array aufsplitten und dann im Array nach ganzen Wörtern suchen.
> Da ich denke, daß sowas länger dauert, würde ich die regexp Methode
> bevorzugen.
>
> Viele Grüße
>
> Andreas.
>
> --
> http://fam-tille.de
>
>
> --
> 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