❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Abfrage nur nach Ziffern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 16:26

Hallo,

für eine Inverssuche unter meinen Telefonnummern hätte ich gerne eine Abfrage, die enthaltene Leerzeichen oder Bindestriche in Rufnummern ignoriert.

Beispiel: Die Handynummer 01715-123 456 789 soll auch gefunden werden, wenn man "5123" oder "56789" eingibt.

Der entsprechende Teil meiner Abfrage ist im Moment:

Code: Alles auswählen

 AND ( LOWER ( "Nummer" ) LIKE LOWER ( '%' || NULLIF ( :Nummernteil, '' ) || '%' ) ) 
, also vorne und hinten Wildcard hab ich schon, nur dazwischen ist es etwas störrisch... :lol:

Gruß
Freischreiber
Zuletzt geändert von Freischreiber am Mo 10. Aug 2015, 16:35, insgesamt 1-mal geändert.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 17:49

Hallo nikki,

LOWER hab ich drin, weil in derselben Tabelle alle Kontakte sind, auch Mailadressen, nach denen ich auch flexibel suchen möchte.
TRIM entfernt evtl. Leerzeichen
Bei mir nicht. Liegt vielleicht an der externen HSQL-DB. Es scheint auch, selbst wenn es geht, nur für Leerzeichen zu gehen. In meiner Tabelle sieht es aber wild aus, / und - kommen auch vor.

Danke trotzdem,
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage nur nach Ziffern

Beitrag von RobertG » Di 17. Mär 2015, 17:52

Hallo Freischreiber,

Du musst irgendwie die innenliegenden Leerzeichen (TRIM kümmert sich nur um die davor und dahinter) sowie andere Zeichen entfernen.

Code: Alles auswählen

AND REPLACE(REPLACE("Nummer",' ',''),'-','') LIKE '%' || :Nummernteil || '%'
Das LOWER hast Du, wenn ich Dich richtig verstehe, nur aus Gewohnheit drin - hier bringt es ja nichts, da keine Großschreibung vorhanden ist ...

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Di 17. Mär 2015, 19:22

Hallo Robert,

das LOWER ist eben deshalb, weil in der selben Tabelle alle Kontakte aufgelistet sind, auch Mailadressen, wo mal was großgeschrieben sein kann. Und manche Mailadressen sind so nichtssagend, daß sie wirklich eine Inverssuche brauchen.

Sehe ich es richtig, wenn ich mit REPLACE auch noch / (Schrägstriche) in Telefonnummern unterdrücken will, muß man dreifach schachteln?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage nur nach Ziffern

Beitrag von RobertG » Di 17. Mär 2015, 20:45

Hallo Freischreiber,
Freischreiber hat geschrieben: das LOWER ist eben deshalb, weil in der selben Tabelle alle Kontakte aufgelistet sind, auch Mailadressen, wo mal was großgeschrieben sein kann. Und manche Mailadressen sind so nichtssagend, daß sie wirklich eine Inverssuche brauchen.
Du meinst vermutlich nicht "Tabelle", sondern "Feld", das Du in diesem Fall nicht nur für Telefonnummern nutzt. Da Du aber tatsächlich nur nach einer Ziffernfolge suchst kann doch die Kleinschreibung nichts bewirken, oder?
Freischreiber hat geschrieben: Sehe ich es richtig, wenn ich mit REPLACE auch noch / (Schrägstriche) in Telefonnummern unterdrücken will, muß man dreifach schachteln?
Genau, alles, was raus soll, kannst Du so herauslöschen, bevor Du nach einer Ziffernfolge suchst.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Do 19. Mär 2015, 19:07

Hallo Robert,

richtig, es gibt ein Feld, das für Rufnummern und Mailadressen genutzt wird, die nach einem weiteren Feld, Nummern-ID, unterschieden werden.

Aber ich sehs ein, nach T-online-Mailadressen kann ich mit dieser Abfrage sowieso nicht mehr suchen, da muß eine zweite Abfrage her...

Funktioniert aber gut, danke!

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Abfrage nur nach Ziffern

Beitrag von Freischreiber » Mo 10. Aug 2015, 16:35

So, jetzt habe ich auch die Inverssuche nach Rufnummern oder Mailadressen mit einem Formularfilter statt mit einer Parameterabfrage realisiert, mit diesem Makro:

Code: Alles auswählen

Sub Formularfilter_Inverssuche(oEvent AS OBJECT)
	oForm = thisComponent.Drawpage.Forms.getByName("Form_Inverssuche") 'Das Formular beruht auf einer Abfrage aller Kontakt-Datensätze.
	oFeld = thisComponent.Drawpage.Forms.getByName("Form_Inverssuche").getByName("txtFiltertext")
	stSuchtext = LCASE(oFeld.text) 'ermöglicht Großbuchstaben in Suchfeld
	oForm.Filter = "LCASE(Nummer) LIKE '%"+stSuchtext+"%' OR REPLACE(REPLACE(REPLACE(LCASE(Nummer), ' ', '' ), '-', '' ), '/', '' ) LIKE '%"+stSuchtext+"%'" 'Mit Leerzeichen- und Zwischenstrichoption
	'Spaltennamen können auch doppelt maskiert werden (""Nachname"")
	oForm.reload
End Sub
Durch das OR werden sowohl zusammenhängende Zeichenketten wie "...@t-online.de" gefunden als auch Rufnummern, bei denen der - Strich stört wie "089-08150816" bei dem Suchtext "0890". Hätte ich auch gleich drauf kommen können :?
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten