Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PostgreSQL und regulaere Ausdruecke

6 views
Skip to first unread message

Peter Blancke

unread,
Dec 30, 2012, 2:40:06 AM12/30/12
to
Guten Morgen,

eine Oder-Verknuepfung in PostgreSQL (8.4.13) kriege ich ja gut mit

SELECT 'dieser als auch jener' ~ '(dieser|jener)';

hin. Allerdings war der Kaffee heute morgen nicht stark genug und
ich finde keinen Weg, mit einem regulaeren Ausdruck eine
UND-Verknuepfung zu formulieren, auszer dieser:

SELECT 'dieser als auch jener' ~ 'dieser'
AND 'dieser als auch jener' ~ 'jener';

Geht das auch irgendwie kuerzer? So elegant wie bei der
ODER-Verknuepfung?

Hintergrund ist die Textsuche in einem Textfeld, in welchem ALLE
Begriffe einer Vorgabe auftauchen muessen.

Grusz,

Peter Blancke

--
Hoc est enim verbum meum!

Lutz Donnerhacke

unread,
Dec 30, 2012, 8:24:51 AM12/30/12
to
* Peter Blancke wrote:
> SELECT 'dieser als auch jener' ~ 'dieser'
> AND 'dieser als auch jener' ~ 'jener';
>
> Geht das auch irgendwie kuerzer? So elegant wie bei der
> ODER-Verknuepfung?

ALL ist dein Freund.

SELECT 'dieser als auch jener' ALL ~ ('dieser', 'jener');

Nicht geprüft, aus dem Gedächtnis.

Peter Blancke

unread,
Jan 2, 2013, 10:20:15 AM1/2/13
to
Am 2012-12-30, Lutz Donnerhacke <lu...@iks-jena.de> schrieb:
> * Peter Blancke wrote:

>> SELECT 'dieser als auch jener' ~ 'dieser'
>> AND 'dieser als auch jener' ~ 'jener';
>>
>> Geht das auch irgendwie kuerzer? So elegant wie bei der
>> ODER-Verknuepfung?

> ALL ist dein Freund.
>
> SELECT 'dieser als auch jener' ALL ~ ('dieser', 'jener');

Ah, Danke fuer den Hinweis auf ALL.

Ich glaube, so ist es jetzt korrekt:

SELECT 'jener oder dieser' ~ ALL(array['jener', 'dieser']);

Das ALL macht die UND-Verknuepfung, waehrend ein ANY eine
ODER-Verknuepfung baut. Ein "~*" ignoriert dann auch
Klein-/Groszschreibung.

Das Problem ist die Suchworteingabe in einem Webformular, bei
welchem Anwender schon einmal drei, vier oder fuenf -- eben beliebig
viele -- Suchbegriffe eingeben, die allesamt in einer Textspalte
vorkommen muessen. Wie sollte das man sonst eleganter loesen?

Tim Landscheidt

unread,
Jan 2, 2013, 1:37:49 PM1/2/13
to
Peter Blancke <bla...@gmx.de> wrote:

>>> SELECT 'dieser als auch jener' ~ 'dieser'
>>> AND 'dieser als auch jener' ~ 'jener';

>>> Geht das auch irgendwie kuerzer? So elegant wie bei der
>>> ODER-Verknuepfung?

>> ALL ist dein Freund.

>> SELECT 'dieser als auch jener' ALL ~ ('dieser', 'jener');

> Ah, Danke fuer den Hinweis auf ALL.

> Ich glaube, so ist es jetzt korrekt:

> SELECT 'jener oder dieser' ~ ALL(array['jener', 'dieser']);

> Das ALL macht die UND-Verknuepfung, waehrend ein ANY eine
> ODER-Verknuepfung baut. Ein "~*" ignoriert dann auch
> Klein-/Groszschreibung.

> Das Problem ist die Suchworteingabe in einem Webformular, bei
> welchem Anwender schon einmal drei, vier oder fuenf -- eben beliebig
> viele -- Suchbegriffe eingeben, die allesamt in einer Textspalte
> vorkommen muessen. Wie sollte das man sonst eleganter loesen?

In diesem Fall solltest Du Dir
http://www.postgresql.org/docs/9.2/static/textsearch.html
ansehen, ob das für Deinen Anwendungsfall passt. Ansonsten
gibt es natürlich für die Umwandlung von "jener dieser" in
"['jener', 'dieser']" unendlich viele Möglichkeiten auf je-
der Ebene, aber programmieren musst Du schon selber :-).

Tim

Peter Blancke

unread,
Jan 3, 2013, 12:08:04 PM1/3/13
to
Am 2013-01-02, Tim Landscheidt <t...@tim-landscheidt.de> schrieb:
> Peter Blancke <bla...@gmx.de> wrote:

>> Ich glaube, so ist es jetzt korrekt:
>
>> SELECT 'jener oder dieser' ~ ALL(array['jener', 'dieser']);
>
>> Das ALL macht die UND-Verknuepfung, waehrend ein ANY eine
>> ODER-Verknuepfung baut. Ein "~*" ignoriert dann auch
>> Klein-/Groszschreibung.
>
>> Das Problem ist die Suchworteingabe in einem Webformular, bei
>> welchem Anwender schon einmal drei, vier oder fuenf -- eben
>> beliebig viele -- Suchbegriffe eingeben, die allesamt in einer
>> Textspalte vorkommen muessen. Wie sollte das man sonst eleganter
>> loesen?

> In diesem Fall solltest Du Dir
> http://www.postgresql.org/docs/9.2/static/textsearch.html

Ja, Danke. Liest sich sehr interessant, auch fuer PG 8.4. Ist aber
fuer meinen Zweck ueberdimensioniert, es reicht die reine
Und-Verknuepfung von ein par Begriffen; Gewichtung von Fundstellen
ist nicht erforderlich.

Der Artikel macht aber auf jeden Fall Vorfreude fuer
Experimentierzeiten. Und irgend wann braucht man es.

> Ansonsten gibt es natürlich für die Umwandlung von "jener dieser"
> in "['jener', 'dieser']" unendlich viele Möglichkeiten auf je- der
> Ebene, aber programmieren musst Du schon selber :-).

Ja, klar. Da werkelt im Hintergrund PHP (und zusaetzlich AJAX
[Javascript, an PHP gekoppelt]) und baut mir das zusammen, das war
jetzt auch kein Problem. Nur der SQL-Teil war mir nicht vollstaendig
klar.

PostgreSQL ist halt neu fuer mich, habe jahrelang nur mit mySQL zu
tun gehabt.

Danke fuer alle Hilfen.
0 new messages