Seite 1 von 1

[gelöst] Suche mit coalesce

Verfasst: Sa 8. Okt 2022, 16:45
von Pit Zyclade
Hallo,

Bin wieder mal am "Schwitzen", weil ich in meiner Welt den Kern von Coalesce nicht begriffen habe.
@RobertG hatte mir im Sommer geholfen, ein Formular mit einer Suche auszustatten.
Nun wollte ich meine Erfahrung auf eine andere Datenbank übertragen. Im Inhalt ähnlich wird also eine Filtertabelle angelegt und eine Abfrage mit SQL-Befehlen ausgestattet (und natürlich getestet). Die SQL-Formulierung lautet:
SELECT "xxx"."*" FROM "xxx" WHERE ........ AND ( ( LOWER ( "Serie" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "SucheSerie" ) FROM "Filter" WHERE "Filter"."ID" = TRUE ), '' ) || '%' ) ) ......

Technisch alles korrekt. Wenn ich nun in der Tabelle Filter im Feld "SucheSerie" eingebe:
"Lieblingsmärchen", dann habe ich kein Resultat, aber wenn ich dort eingebe
" Lieblingsmärchen", also mit einer Leerstelle am Anfang, dann funktioniert das Filter korrekt.
Im durchsuchten Datensatz steht im betreffenden Feld "Die Lieblingsmächen ....".
Warum muß man ein Leerzeichen vor dem gesuchten Wort eingeben ?
Kann man diese Unlogik umschiffen ?

Besten Dank für eine Anregung!

Re: Suche mit coalesce

Verfasst: Sa 8. Okt 2022, 21:22
von RobertG
Hallo Pit,

von der Abfrage her ist das so nicht erklärbar. Wenn da statt

Code: Alles auswählen

LIKE '%' ||

Code: Alles auswählen

LIKE '% ' ||
stehen würde, dann wäre in der Bedingung fest ein Leerzeichen mit drin. Dann müsste auf jeden Fall der Inhalt ein Leerzeichen enthalten.
Du hast aber den Fall, dass Du ein Leerzeichen ergänzen musst. Da aber '%' für beliebig viele Zeichen steht macht das keinen Sinn.

Re: Suche mit coalesce

Verfasst: Sa 8. Okt 2022, 22:17
von Pit Zyclade
Ich habe meinen Fehler schon gefunden, ich habe wohl schusslich vergessen die Datenbank zwischendurch zu schließen.
Denn eben klappte es prompt, also ohne den Fehler.

Dennoch eine Rückfrage: Wenn ich in der Such"maske" also '% ', dann meinst du hätte das meine Beobachtung erklärt. Aber ich hatte doch " Lieblingsmärchen" eingegeben. Ist die Reihenfolge von % und Leerstelle gar nicht wichtig?
(Gut, ich kann ja mal wieder ein wenig experimentieren. Vielleicht kommt mir dann eine Erläuchtung).

Ich danke dir, Robert, für deine schnelle Antwort von Herzen.

Re: Suche mit coalesce

Verfasst: So 9. Okt 2022, 12:35
von RobertG
Nein, '% ' würde nur dann zu einem Ziel führen, wenn eben in Deiner Abfrage ein Ergebnis nur geliefert würde, wenn Du das Leerzeichen weg gelassen hättest.
Aus "Lieblingsmärchen" wäre automatisch " Lieblingsmärchen" als Abfrageinhalt erschienen und Du hättest bei "Die Lieblingsmärchen ...." einen Treffer gehabt.
Aus " Lieblingsmärchen" wäre aber dann " Lieblingsmärchen" geworden und der Treffer wäre nicht mehr da gewesen. Hätte also genau anders herum laufen müssen.

Warum die Datenbank erst einmal geschlossen werden muss um zu einem richtigen Abfrageergebnis zu kommen ist mir allerdings genau so ein Rätsel.