Parameterabfrage mit Ähnlichkeiten
Moderator: Moderatoren
-
- *
- Beiträge: 16
- Registriert: Mi, 18.10.2006 08:29
- Wohnort: Goettingen, Planet Earth
- Kontaktdaten:
Parameterabfrage mit Ähnlichkeiten
Hallo,
hab hier eine Datenbankabfrage erstellt, bei der als Kriterium ":Feldname" angegeben ist. Die Abfrage führt aber nur zu Treffern wenn ich genau den richtigen Begriff eingebe. Ich möchte aber auch Treffer wenn ich einen unvollständigen Suchbegriff eingebe, also z:b. bei Eingabe von "Micro" sollte genauso "Microsoft" wie "Microphon" gefunden werden.
Leider wird mir aus der Onlinehilfe die Syntax für Kriterium nicht ganz klar. Ich habe WIE '*:Feldname*' benutzt, aber dann wird für den Feldname gar kein Eingabefeld mehr angezeigt.
Kann mir da jemand schnell auf die Sprünge helfen, was die korrekte Syntax wäre?
Danke schonmal!
- Ulli -
hab hier eine Datenbankabfrage erstellt, bei der als Kriterium ":Feldname" angegeben ist. Die Abfrage führt aber nur zu Treffern wenn ich genau den richtigen Begriff eingebe. Ich möchte aber auch Treffer wenn ich einen unvollständigen Suchbegriff eingebe, also z:b. bei Eingabe von "Micro" sollte genauso "Microsoft" wie "Microphon" gefunden werden.
Leider wird mir aus der Onlinehilfe die Syntax für Kriterium nicht ganz klar. Ich habe WIE '*:Feldname*' benutzt, aber dann wird für den Feldname gar kein Eingabefeld mehr angezeigt.
Kann mir da jemand schnell auf die Sprünge helfen, was die korrekte Syntax wäre?
Danke schonmal!
- Ulli -
Re: Parameterabfrage mit Ähnlichkeiten
Hallo,
wenn Du mit WIE bzw. LIKE arbeitest, dann musst Du als Platzhalter % verwenden.
Für Dein Beispiel also "Micro%"
Gruß Barlee
wenn Du mit WIE bzw. LIKE arbeitest, dann musst Du als Platzhalter % verwenden.
Für Dein Beispiel also "Micro%"
Gruß Barlee
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
F1 Onlinehilfe OpenOffice.org Base, Abfrageentwurf hat geschrieben:Parameterabfragen mit Platzhaltern (*, _) oder Sonderzeichen (z. B. ?) sind nicht möglich.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- *
- Beiträge: 16
- Registriert: Mi, 18.10.2006 08:29
- Wohnort: Goettingen, Planet Earth
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Hi,
So eine Möglichkeit hatte ich eigentlich als selbstverständlich angesehen
Na, vielleicht findet sich ja doch noch ein Workaround, danke jedenfalls!
- Ulli -
Ja, hab ich auch gesehen, konnte ich nur einfach nicht glauben....komma4 hat geschrieben:F1 Onlinehilfe OpenOffice.org Base, Abfrageentwurf hat geschrieben:Parameterabfragen mit Platzhaltern (*, _) oder Sonderzeichen (z. B. ?) sind nicht möglich.


Na, vielleicht findet sich ja doch noch ein Workaround, danke jedenfalls!
- Ulli -
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Structured Query Language (SQL) ist eine von ANSI und ISO standardisierte Datenbankabfragesprache und da gibst nun mal nur das Prozentzeichen als Platzhalter.sicgoe hat geschrieben:Ja, hab ich auch gesehen, konnte ich nur einfach nicht glauben....So eine Möglichkeit hatte ich eigentlich als selbstverständlich angesehen
![]()
Na, vielleicht findet sich ja doch noch ein Workaround, danke jedenfalls!
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
-
- *
- Beiträge: 16
- Registriert: Mi, 18.10.2006 08:29
- Wohnort: Goettingen, Planet Earth
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Ist mir schon klarpmoegenb hat geschrieben: Structured Query Language (SQL) ist eine von ANSI und ISO standardisierte Datenbankabfragesprache und da gibst nun mal nur das Prozentzeichen als Platzhalter.

Die Onlinehilfe ist da auch uneindeutig/wortkarg. Die Abfrage sollte in SQL lauten: SELECT "Feld" AS "Feld" FROM "Tabelle" WHERE ( "Feld" LIKE '%:Feld%') - übersetzt OOB im Kriterium-Feld des Abfrageentwurfs als WIE '*:Feld*'. Also Base macht aus den Prozentzeichen von SQL, ein Sternzeichen.
Wie auch immer, der gewünschte Effekt - Suche nach allen Feldern in denen die Eingabe enthalten ist (nicht exakte Übereinstimmung) - ist offensichtlich nicht möglich. Stattdessen benutze ich jetzt erstmal die Anweisung SELECT "Feld" AS "Feld" FROM "Tabelle" WHERE ( "Feld" LIKE :Feld) (oder im Abfrageentwurf - Kriterium WIE :Feld), was zur Folge hat, dass die unscharfe Suche zumindest funktioniert, indem man bei der Variablen-Eingabe ein Prozentzeichen mit eingibt. Im o.g. Beispiel "Micro%". Ist zwar unschön, funktioniert aber zumindest...

- Ulli -
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Die Interpretation, dass * und _ nicht erlaubt sind (wohl aber das %) brachte mich dazu das Thema erneut zu untersuchen.
Fazit: es geht, wenn in der Eingabe der Parameterabfrage ein % mit eingegeben wird.
Funktionierendes Beispiel (OOo 3.0.1/PostgreSQL-Datenbank 8.11.3/JDBC-Treiber 8.4-701.jdbc4)
Im Parameter-Abfragefenster habe ich dann ap% eingegeben, um den Datensatz des Apollon (description:
Sohn des Zeus und der Leto, Zwillingsbruder der Artemis. Gott des Lichtes (Helios - Sonne) und des Frühlings, der sittlichen Ordnung/Reinheit und Gesetzmäßigkeit, der Weissagung und der Musik, des Gesanges und der Dichtung, Helfer im Krieg, Beschützer der Herden)
zu sehen.
Cool, Danke für's Nachhaken! [mache meine Abfragen sonst über BASIC
]
Fazit: es geht, wenn in der Eingabe der Parameterabfrage ein % mit eingegeben wird.
Funktionierendes Beispiel (OOo 3.0.1/PostgreSQL-Datenbank 8.11.3/JDBC-Treiber 8.4-701.jdbc4)
Code: Alles auswählen
SELECT "id" AS "id", "name" AS "name", "description" AS "description" FROM "public"."t301_greek_name" AS "t301_greek_name" WHERE "name" LIKE :Name
Sohn des Zeus und der Leto, Zwillingsbruder der Artemis. Gott des Lichtes (Helios - Sonne) und des Frühlings, der sittlichen Ordnung/Reinheit und Gesetzmäßigkeit, der Weissagung und der Musik, des Gesanges und der Dichtung, Helfer im Krieg, Beschützer der Herden)
zu sehen.
Cool, Danke für's Nachhaken! [mache meine Abfragen sonst über BASIC

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- *
- Beiträge: 16
- Registriert: Mi, 18.10.2006 08:29
- Wohnort: Goettingen, Planet Earth
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Das blöde ist halt, das * und % für OOoBase im Prinzip das gleiche sind, % in der SQL-Schreibweise, * in der OOo-Schreibweisekomma4 hat geschrieben:Die Interpretation, dass * und _ nicht erlaubt sind (wohl aber das %) brachte mich dazu das Thema erneut zu untersuchen.
Ist in meinen Augen bloss halt etwas unelegant, wenn bei der EIngabe noch Anweisungen (Jokerzeichen) miteingegeben werden müssen. Schöner wäre es, wenn in der Abfrage die Unschärfe mit implementiert werden könnte. Aber das Leben ist halt kein Ponyschleckenkomma4 hat geschrieben: Fazit: es geht, wenn in der Eingabe der Parameterabfrage ein % mit eingegeben wird.

- Ulli -
Re: Parameterabfrage mit Ähnlichkeiten
Aloha
Wieso nicht einfach so:sicgoe hat geschrieben:Ist in meinen Augen bloss halt etwas unelegant, wenn bei der EIngabe noch Anweisungen (Jokerzeichen) miteingegeben werden müssen. Schöner wäre es, wenn in der Abfrage die Unschärfe mit implementiert werden könnte. Aber das Leben ist halt kein Ponyschleckenkomma4 hat geschrieben: Fazit: es geht, wenn in der Eingabe der Parameterabfrage ein % mit eingegeben wird.
Code: Alles auswählen
SELECT "Feld" AS "Feld" FROM "Tabelle" WHERE LOWER("Feld") LIKE LOWER('%' || :Feld || '%')
-
- *
- Beiträge: 16
- Registriert: Mi, 18.10.2006 08:29
- Wohnort: Goettingen, Planet Earth
- Kontaktdaten:
Re: Parameterabfrage mit Ähnlichkeiten
Ah, gute IdeeDPunch hat geschrieben: Wieso nicht einfach so:
Code: Alles auswählen
SELECT "Feld" AS "Feld" FROM "Tabelle" WHERE LOWER("Feld") LIKE LOWER('%' || :Feld || '%')

LOWER ist übrigens gar nicht nötig, zwischen Gross-/Kleinschreibung unterscheidet OOoBase anscheinend ohnehin nicht...
Aber vielen Dank für's mitgrübeln

- Ulli -
Re: Parameterabfrage mit Ähnlichkeiten
Aloha
Ich hab das gerade eben mal ausprobiert und bei mir klappt es einwandfrei (Win XP / OOo 3.11 / Eingebettete HSQL-DB).
Keine Ahnung, ob das Versionsspezifisch ist, aber LIKE-Abfragen sind bei mir übrigens Case-Sensitive.
Ich hab das gerade eben mal ausprobiert und bei mir klappt es einwandfrei (Win XP / OOo 3.11 / Eingebettete HSQL-DB).
Keine Ahnung, ob das Versionsspezifisch ist, aber LIKE-Abfragen sind bei mir übrigens Case-Sensitive.