Hallo Michael, > > ich habe in einer BASE-Datenbank ein Feld FileName (nur der Name, ohne > Pfad) und ich möchte den am letzten "." aufsplitten in > Bezeichnung.Extension.
Das geht nicht so einfach mit den eingebauten Funktionen, da eben die Extension von der Länge her nicht festlegbar ist (ich finde bei Wikipedia auch Erweiterungen mit 6 Zeichen ...) und eine Rückwärtssuche für die eingebaute HSQLDB nicht existiert. Du kannst natürlich einen String so lange begrenzen, bis in dem Ergebnis kein trennender Punkt mehr vorhanden ist. So ähnlich funktioniert im Handbuch die "Suche mit LOCATE". > > Zwar habe ich Beschreibungen einiger Funktionen > <http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html#bfc_string_binary_functions> > gefunden, aber INSTR und LOCATE führen zu Fehlermeldungen beim Ausführen > der Abfrage. LOCATE läuft > /UPPER(RIGHT("FileName", 5- POSITION ('.' IN right("FileName", 5)))) AS > "TYP"/ > liefert aber nicht zuverlässig das richtige Ergebnis, da Werte wie > > * Text.EPUB, > * 1.HTML > aber auch > * Version 1.0.DOC > > vorkommen können. > > Meine Fragen: > > * Gibt es eine Suche beginnend von rechts oder kann ich das z.B. mit > Split und einem Array lösen? Nicht mit Hilfe von Abfragen und Funktionen in der eingebauten Datenbank. Dazu müsstest Du gegebenenfalls Makros bemühen. > * Warum funktionieren einige Funktionen von der zitierten Seite nicht > bzw. wo gibt es eine korrekte Übersicht? Du suchst bei der falschen Version der HSQLDB. Die eingebaute Datenbank ist die 1.8, nicht die 2.0. Alle für diese Datenbank verfügbaren Funktionen sind auch im Handbuch beschrieben. > > LibreOffice Version: 6.1.5.2 / Build-ID: > 90f8dcf33c87b3705e78202e3df5142b201bd805 > Datenbank-Backend PostgreSQL 6.03 (die Abfrage möchte ich eigentlich in > BASE bzw. final nur in dem entsprechenden Formular hinterlegen). Wenn das Ganze unter PostgreSQL laufen soll, dann musst Du natürlich dort in der Dokumentation nachsehen. In MySQL gäbe es eine Funktion REVERSE(), mit der Du zuerst Deinen String umdrehen könntest, dann darin den ersten Punkt suchen, an der Stelle abschneiden und wieder zurückdrehen könntest. Diese Funktion ist auch in der eingebauten Firebird-Datenbank verfügbar. Gruß Robert -- Homepage: http://robert.familiegrosskopf.de LibreOffice Community: http://robert.familiegrosskopf.de/map_3 -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de Listenarchiv: https://listarchives.libreoffice.org/de/users/ Datenschutzerklärung: https://www.documentfoundation.org/privacy