Seite 1 von 1
DB2 via ODBC
Verfasst: Di, 12.02.2008 15:06
von Eia
Hi
Ich habe eine ODBC-Verbindung zu einer DB/2-Datenbank unter Linux (wie
hier beschrieben), die im Prinzip auch funktioniert.
Mein Problem:
Die Adressfelder werden alle mit Leerzeichen soweit aufgefüllt, bis die definierte Feldlänge erreicht ist.
Im Briefkopf ist das ja (fast) wurscht, aber ich habe Fälle, bei denen die Felder nebeneinander stehen und durch Kommata getrennt sind.
Das sieht dann etwa so aus:
Hat jemand einen Tipp?
Könnte man das mit einer Abfrage lösen, wobei man quasi Substrings aus den Originalfeldern ausliest, die diese Leerzeichen ignorieren?
Auch für Bedingungen ist das doof, weil leere Felder eben nicht leer sind und ich auf Formeln wie <"." ausweichen muss in der Hoffnung, dass ich da immer richtig liege.
Danke und Gruss
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:21
von komma4
es gibt auch beim DB2/SQL eine TRIM-Funktion
http://publib.boulder.ibm.com/infocente ... 023198.htm
Hilft Dir das?
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:29
von pmoegenb
In dem Fall müsste es
RTRIM sein.
Ich zitiere:
DB2
DB2 stellt die Funktionen LTRIM und RTRIM zur Verfügung, um Leerzeichen vom Anfang oder
Ende eines Strings zu kappen.
Beispiel:
Code: Alles auswählen
SELECT LTRIM( RTRIM(' wamalamadingdong ') );
'wamalamadingdong'
Eine Abfrage wäre demzufolge erforderlich.
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:42
von Eia
Danke für die schnelle Auskunft. Aber ich weiß jetzt nicht, wo ich das eingeben müsste.
Das Ganze ist ja in eine OO-Datenbank eingebunden. Also habe ich Base geöffnet, dort eine Abfrage definiert und diese SQL-Sequenz eingegeben:
SELECT "KDNR", TRIM(:KUNA1), TRIM(TRAILING FROM :KUNA1) FROM "Systemname"."Bibliothek"."Tabelle"
Das wird aber nicht akzeptiert.
Im Hilfetext von OO finde ich auch nichts zu TRIM
Sollte das in OO prinzipiell gehen oder ist es ein SQL-Statement, welches in einer IBM-Umgebung benutzt werden muß?
Ich hab' kaum Ahnung von SQL, daher sind meine Fragen wahrscheinlich ziemlich doof
mfG
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:49
von Eia
pmoegenb hat geschrieben:
Beispiel:
Code: Alles auswählen
SELECT LTRIM( RTRIM(' wamalamadingdong ') );
'wamalamadingdong'
Eine Abfrage wäre demzufolge erforderlich.
Ich hab versucht, das einzubauen:
SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
bekomme aber immer "Error in SQL-Syntax
Kannst du nochmal helfen?
mfG
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:51
von komma4
die Stelle ich richtig.
Die Syntax des Befehls ist abhängig vom Treiber. I.d.R. dokumentieren die aber ihre Befehle nicht.
versuche mal ein einfaches SELECT TRIM( ' FeldMitSpaces ' ) ;
geht das?
Edit: der phpBB Editor hat mir die Leerzeichen in der Variablen rausgenommen, vor und hinter "FeldMitSpaces" sind drei Leerzeichen
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:57
von chrk
Eia hat geschrieben:SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
Das Komma trennt Felder in der Abfrage, hinter dem letzten (hier: einzigen) Feld kommt keins, in Deiner Variante erwartet er noch ein Feld.
Ach, und auf komma4's Beitrag: je nach DB und Treiber können die Hochkomma nötig sein oder nicht, manchmal benötigst Du auch ein schräges (`) Hochkomma.
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 15:58
von pmoegenb
Eia hat geschrieben:
Ich hab versucht, das einzubauen:
SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
bekomme aber immer "Error in SQL-Syntax
Hallo Eia,
ich habe die Syntax von DB2 beschrieben, ob diese von OOo unterstützt wird entzieht sich meiner Kenntnis. In jedem Fall ist das
Komma vor
FROM falsch. Kommas sind nur bei Aufzählungen (z. B. zu selektierende Felder) erforderlich.
Re: DB2 via ODBC
Verfasst: Di, 12.02.2008 16:12
von Eia
I got it!
Die Syntax ist:
SELECT "KDNR", RTRIM("KUNA1") FROM "Sytem"."Bibliothek"."Tabelle"
vielen Dank für Eure Hilfe!