[gelöst] Suche mit coalesce
Verfasst: Sa 8. Okt 2022, 16:45
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!
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!