DB2 via ODBC

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: DB2 via ODBC

Re: DB2 via ODBC

von Eia » Di, 12.02.2008 16:12

I got it!
Die Syntax ist:
SELECT "KDNR", RTRIM("KUNA1") FROM "Sytem"."Bibliothek"."Tabelle"
vielen Dank für Eure Hilfe!

Re: DB2 via ODBC

von pmoegenb » Di, 12.02.2008 15:58

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

von chrk » Di, 12.02.2008 15:57

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

von komma4 » Di, 12.02.2008 15:51

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

von Eia » Di, 12.02.2008 15:49

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

von Eia » Di, 12.02.2008 15:42

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

von pmoegenb » Di, 12.02.2008 15:29

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

von komma4 » Di, 12.02.2008 15:21

es gibt auch beim DB2/SQL eine TRIM-Funktion

http://publib.boulder.ibm.com/infocente ... 023198.htm


Hilft Dir das?

DB2 via ODBC

von Eia » Di, 12.02.2008 15:06

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:

Code: Alles auswählen

Name              , Strasse             , Ort
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

Nach oben