Ausgabe Text aus Datenfeld (Blob) nur in Großbuchstaben

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
hubert17
Beiträge: 4
Registriert: Di 22. Mär 2022, 13:19

Hallo Zusammen,

ich möchte aus einem Datenbankfeld vom Typ Blob den Text auslesen. Soweit kein Problem. In der Datenbank steht der Text jedoch nur in GROSSBUCHSTABEN, z.B. "IN DER SONNE LIEGEN.". Eingeben im Programm ist jedoch "In der Sonne liegen.". Ist es möglich dies per Select-Anweisung in der richtigen Schreibweise, mit Groß- und Kleinbuchstaben, abzufragen, oder auch anders?

Gruß Hubert
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Kannst du die Tabellendefinition (DDL) mal posten?
I.d.R. erfolgt beim Lesen keine Umwandlung der Daten.
Wenn diese also Uppercase sind, wurden diese auch so in die DB geschrieben oder es wird beim Lesen gezielt Upper() aufgerufen.
Nachträglich wieder zurückwandeln geht da leider nicht, ausser per Lower(), aber damit ist dir auch nicht geholfen.
Hast du ein Tool mit dem du native die Daten lesen kannst?
Z.B. RedExpert?
hubert17
Beiträge: 4
Registriert: Di 22. Mär 2022, 13:19

Danke erstmal für deine Antwort.
Auf Grund dieser, habe ich festgestellt, das ich für das gewünschte zwei Datenfelder zur Verfügung habe.

Code: Alles auswählen

TBL                            ;FLD                            ;TP        ;LEN     ;RDB$FIELD_POSITION    ;RDB$COLLATION_ID
KATALOG                        ;BAUVORHABEN                    ;BLOB      ;1       ;33                    ;
KATALOG                        ;BAUVORHABEN_PLAIN              ;BLOB      ;1       ;34                    ;0
Nur "BAUVORHABEN" ist hierbei das binäre Datenfeld.

Zum Arbeiten mit der Datenbank besitzt das Programm einen integrierten SQL Editor und hier kann man sich alle Felder, bis auf binäre anzeigen lassen. Ansonsten helfe ich mir ab und zu auch mit Power Query in Excel, da ich hier über den ODBC-Treiber auf die Firebird-Datenbank zugreifen (auslesen) kann.
Power Query habe ich jetzt auch bemüht und für das binäre Datenfeld ergibt das:

Code: Alles auswählen

{\rtf1\ansi\deff0\uc1\ansicpg1252\deftab567{\fonttbl{\f0\fnil\fcharset1 Arial;}{\f1\fnil\fcharset2 Wingdings;}{\f2\fnil\fcharset2 Symbol;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red128\green0\blue128;\red128\green0\blue0;\red0\green255\blue0;\red0\green255\blue255;\red0\green128\blue128;\red0\green0\blue128;\red255\green255\blue255;\red192\green192\blue192;\red128\green128\blue128;\red0\green0\blue0;}{\*\generator WPTools_5.510;}{\wpparid0\plain\fs20 In der Sonne liegen\par }}
Wie man am Ende der Code-Zeile erkennen kann, ich bleibe jetzt mal bei " In der Sonne liegen", ist hier der Text abgelegt, wie in dem Programm.

In dem anderen Datenfeld steht wieder "IN DER SONNE LIEGEN".

Kann man die Daten aus dem binären Datenfeld als Text auslesen? Bisher habe ich nur Anleitungen für Bilder oder Mp3-Dateien gefunden.
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Du kannst eine RTF.Datei ja auch als Textblob (subtype text) speichern.
Das hilft dir i.M. aber zum Auselsen nichts, da du ja den nackten Text nicht einwandfrei herauslösen kannst.
Ein Wort bzw. Text kann ja in Teilen andere Schrift oder Darstellungen wie fett, unterstrichen, aufweisen.
Ich denke mal, dass das andere Feld zum besseren Suchen in Großbuchstaben gespeichert wurde.

Binärfelder bekommst du als Bytearray übergeben.
Wenn du in .Net arbeitest kann man das einfach konvertieren.
Die Encoding-Klasse enthält eine GetString(byte[] bytes)-Methode.
Andere Sprachen haben ggf. vergleichbare Methoden.
hubert17
Beiträge: 4
Registriert: Di 22. Mär 2022, 13:19

Das Programm arbeitet mit VBScript.
Zumindest weiß ich jetzt, wonach ich suchen muss.
Vielen Dank erstmal.

Gruß Hubert
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

VBScript ist ja nun nicht gerade die performanteste Lösung :D.
hubert17
Beiträge: 4
Registriert: Di 22. Mär 2022, 13:19

Das ist wohl war, aber viel mehr lässt das Programm nicht zu. Pascal-Script wäre noch eine Option.

Habe es jetzt mit der RTF-Datei gelöst. Den gestreamten Text in einer Textdatei gespeichert, mit der Endung rtf. Da ich es sowieso in Word importiere, ist das öffnen und kopieren dann kein Problem.

Danke nochmals für die Denkanstöße.

Gruß Hubert
Antworten