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+unsubscribe@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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.