[gelöst]Suche mit schreibfehlern
Moderator: Moderatoren
[gelöst]Suche mit schreibfehlern
Hallo zusammen,
meine Frage: Ich such in per Formular, dass auf den SQL Befehl
SELECT * FROM "Archiv" WHERE "Autor" = :Autor OR "Nummer" = :Nummer OR "Stückname" = :Stückname OR "Regie" = :Regie OR "Bühnenbild" = :Bühnenbild OR "Medium" = :Medium OR "Bühne" = :Bühne OR "Intendanz" = :Intendanz
folgt. Nun möchte ih z.b. auch mit klein/Großschreibung suchen. sprich ich will nicht alles genau so eingeben müssen wie es in der Tabelle steht. Ich hoffe ihr versteht das so ungefähr...
Danke
Tim
meine Frage: Ich such in per Formular, dass auf den SQL Befehl
SELECT * FROM "Archiv" WHERE "Autor" = :Autor OR "Nummer" = :Nummer OR "Stückname" = :Stückname OR "Regie" = :Regie OR "Bühnenbild" = :Bühnenbild OR "Medium" = :Medium OR "Bühne" = :Bühne OR "Intendanz" = :Intendanz
folgt. Nun möchte ih z.b. auch mit klein/Großschreibung suchen. sprich ich will nicht alles genau so eingeben müssen wie es in der Tabelle steht. Ich hoffe ihr versteht das so ungefähr...
Danke
Tim
Zuletzt geändert von tim9394 am Di, 16.10.2012 21:25, insgesamt 1-mal geändert.
Re: Suche mit schreibfehlern
Es geht so grade noch. Es gibt mehrere Möglichkeiten der Suche nach Ähnlichkeit. Für Groß-/Kleinschreibung bietet es sich an, alle Vergleichswerte mit der Funktion LOWER() in Kleinbuchstaben zu setzen. Die WHERE-Klausel kennt die LIKE-Bedingung mit Platzhaltern. Außerdem sind unter Umständen reguläre Ausdrücke möglich (theoretisch auch bei HSQLDB und Base, aber die Hilfe schweigt sich, wie RobertG im Handbuch schreibt, dazu weitgehend aus).tim9394 hat geschrieben:Ich hoffe ihr versteht das so ungefähr...
Die genaue Schreibweise und das, was zur Verfügung steht, hängt vom verwendeten Datenbanksystem ab. Du benutzt offensichtlich das BASE-eigene HSQL, also solltest du alle Einzelheiten im Base-Handbuch finden.
Nebenbei:
Etwas mehr sprachliche Sorgfalt wäre nicht schlecht; man kann einen Beitrag auch mit der Vorschau kontrollieren, ob andere ihn so verstehen wie er gemeint ist. Hier ging es noch, weil der restliche Text genau genug war. Aber du solltest auch an die Leser denken; die sollen dir schließlich helfen. Danke! JürgenIch such in per Formular, dass auf den SQL Befehl ... folgt.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Suche mit schreibfehlern
Um das eben kurz in die entsprechende Form zu bringen:
Du sogst damit dafür, dass sowohl der Inhalt des Feldes als auch Deiner Eingabe klein geschrieben wird. Außerdem kann der Inhalt irgendwo im Bereich des Feldes "Name" auftauchen. Wenn Du allerdings zu viele Felder und zu kurze Eingaben wählst, dann kann das zu einer ganzen Reihe Datensätze führen, die Du gar nicht haben willst.
Was leider noch kein Feature ist: Die entsprechenden Suchbegriffe werden im Ergebnis nicht (z.B. farblich) markiert. Aber wenn irgendwann einmal wieder Entwickler Base vorantreiben kann das ja noch werden.
Gruß
Robert
Code: Alles auswählen
SELECT "Name" FROM "Tabelle1" WHERE LOWER ( "Name" ) LIKE ( '%' || LOWER ( :Name ) || '%' )
Was leider noch kein Feature ist: Die entsprechenden Suchbegriffe werden im Ergebnis nicht (z.B. farblich) markiert. Aber wenn irgendwann einmal wieder Entwickler Base vorantreiben kann das ja noch werden.
Gruß
Robert
Re: Suche mit schreibfehlern
Hey,
das mit dem farblichen markieren wäre ja mal klasse... aber leider noch ein Traum...
Hab deinen Befehl mal auf meine Suche angewendet und ich finde egal was ich eingebe (sprich ob genau den Titel/oder auch sowas wie "posamcnvoe0q3") immer alle Datenätze.
Was soll ich tun?
das mit dem farblichen markieren wäre ja mal klasse... aber leider noch ein Traum...
Hab deinen Befehl mal auf meine Suche angewendet und ich finde egal was ich eingebe (sprich ob genau den Titel/oder auch sowas wie "posamcnvoe0q3") immer alle Datenätze.
Was soll ich tun?
Re: Suche mit schreibfehlern
Dass Du wirklich alles findest liegt in der Natur der Abfrage von mehreren Feldern.
Die Abfrage sucht ja alles, was passend zu der Eingabe ist. Angenommen, Du lässt eingaben leer, so erzeugt ( '%' || LOWER ( :Name ) || '%' ) daraus eine Abfrage nach allen Namen. '%' steht für beliebig viele Zeichen. Und ("Name") LIKE (alle möglichen Zeichen) ergibt nun einmal alle Datensätze. Ob da nun etwas steht oder nicht.
Jetzt hast Du Deine Ursprungsabfrage auch noch so aufgebaut, dass Du die Bedingungen mit "OR" verknüpfst. Das heißt, dass nur eine leere Parametereingabe dazu führt, dass alle Datensätze angegeben werden.
Gruß
Robert
Die Abfrage sucht ja alles, was passend zu der Eingabe ist. Angenommen, Du lässt eingaben leer, so erzeugt ( '%' || LOWER ( :Name ) || '%' ) daraus eine Abfrage nach allen Namen. '%' steht für beliebig viele Zeichen. Und ("Name") LIKE (alle möglichen Zeichen) ergibt nun einmal alle Datensätze. Ob da nun etwas steht oder nicht.
Jetzt hast Du Deine Ursprungsabfrage auch noch so aufgebaut, dass Du die Bedingungen mit "OR" verknüpfst. Das heißt, dass nur eine leere Parametereingabe dazu führt, dass alle Datensätze angegeben werden.
Gruß
Robert
Re: Suche mit schreibfehlern
Ok verstehe, mein Plan ist jetzt ein Formular zu entwerfen welches für jede Kategorie eine Schaltfläche aufweist. Diese Schaltfläche soll dann nur noch eine SQL Abfrage durch führen. Dazu schreib ich pro Kategorie eine Abfrage und weise jede Schaltfläche dann einer zu. ist das so möglich um meine Such im Formular zu gestalten?
Gruß
Tim
Gruß
Tim
Re: Suche mit schreibfehlern
Hallo Tim,
vielleicht hilft Dir der folgende Code etwas aus der Patsche:
Mit "LIKE" waren wir ja schon im Klaren. Jetzt muss der Abfrage nur ein Ausdruck untergeschoben werden, der auf gar keinen Fall vorkommt. Dies sollen die beiden Paragraphen sein ('§§'). Zuerst habe ich ausprobiert, ob direkt auf den Parameter mit der Funktion IFNULL zugegriffen werden kann. Der Parameter gibt aber nicht NULL, sondern ein leeres Feld wieder (''). Das leere Feld wird durch 2 direkt nacheinander gesetzte Hochkommata (über dem # auf der Tastatur) angesprochen. Jetzt habe ich einem eventuelle leeren Feld durch die Funktion NULLIF den Wert NULL zugewiesen. Das Ergebnis: Gebe ich bei dem Parameter nichts ein, so wird auch nichts in der Abfrage angezeigt.
Gruß
Robert
vielleicht hilft Dir der folgende Code etwas aus der Patsche:
Code: Alles auswählen
SELECT "Name" FROM "Tabelle1"
WHERE LOWER ( "Name" ) LIKE ( '%' || IFNULL ( NULLIF ( LOWER ( :Name ), '' ) ,'§§') || '%' )
Gruß
Robert
Re: Suche mit schreibfehlern
Hallo Robert,
sry dass ich mich erst jetzt melde. Hatte lange frei...
Hat wunderbar funktioniert!!! Vielen Dank!!! Ich denke damit kann das Thema geschlossen werden... Falls noch was is hab ich ja mit euch Profis an der hand
Danke nochmal!
Gruß
Tim
sry dass ich mich erst jetzt melde. Hatte lange frei...
Hat wunderbar funktioniert!!! Vielen Dank!!! Ich denke damit kann das Thema geschlossen werden... Falls noch was is hab ich ja mit euch Profis an der hand

Danke nochmal!
Gruß
Tim
Re: Suche mit schreibfehlern
Das hast du selbst in der Hand. Üblich ist, dass du den ersten Beitrag zum Ändern öffnest und an den Anfang der Titelzeile (Betreff) etwas wie "[gelöst]" oder "[erledigt]" einfügst. Jürgentim9394 hat geschrieben:Ich denke damit kann das Thema geschlossen werden...
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC