View Full Version : SQL Befehl?
Ich habe mal wieder eine Frage zu SQL:
Wir haben eine Adressdatei (K1), in der alle Debitoren (Feld Kontoart=D), deren Kontonr. 5 stellig ist (normalerweise sind die Konten 7 stellig) im Feld Buchung eine Sperre mit "J" bekommen sollen.
Leider kenn ich nicht den update - Befehl, der sich auf die Länge der Kontonummer bezieht.....
UPDATE L60/K1 K1 SET K1_BUCHUNG = 'J' WHERE K1_KTOART = 'D' and K1_KTONR = ......
Kennt jemand den korrekten Befehl?
Frank Hildebrandt
01-06-06, 08:39
Ich nehme mal an, dass bei Euch die Konto-Nr. alphanumerisch ist. Dann kannst Du die Länge des Inhalts des Feldes folgendermaßen ermitteln. length(trim(K1_KTONR))
danke!
wie binde ich das denn in den befehl ein?
UPDATE L60/K1 K1 SET K1_BUCHUNG = 'J' WHERE K1_KTOART = 'D' and
length(trim(K1_KTONR)) = 5
geht das?
das klappt irgendwie nicht...
Eine andere Frage? Neben der Selektion nach Kontonr.länge muss ich noch nach Kontenklasse selektieren; also z.B. alles was mit 2... beginnt.
ginge das so?
UPDATE L60/K1 K1 SET K1_BUCHUNG = 'J' WHERE K1_KTOART = 'D' and K1_KTONR =
'2 '
?
Frank Hildebrandt
01-06-06, 09:26
Ist das Feld K1_KTONR denn numerisch oder alphanumerisch? Wenn es alphanumerisch ist, dass sollte es auch klappen.
es ist alphanum.
ist teste weiter....
zu meiner 2. frage:
UPDATE L60/K1 K1 SET K1_BUCHUNG = 'J' WHERE K1_KTOART = 'D' and K1_KTONR like ‘2’
Konten, die mit 2 beginnen sollen ebenso ein 'J' bekommen...
Klappt das so mit LIKE?
Frank Hildebrandt
01-06-06, 09:32
Die erste Stelle der Konto-Nr. kannst Du folgendermaßen abfragen. SUBSTRING(K1_KTONR, 1, 1) = '2'
length und trim gibts erst ab V5R1 !
Man kann Dezimalfelder umwandeln mittels CHAR(mynum), was dann sogar eine linksbündige Ausrichtung erzeugt.
Allerdings, wenn das Konto rein numerisch ist gehts auch per
dec(mykonto, 7, 0) < 100000
Das 2. wäre "like Kontoklasse '2%'"
Der befehl klappt nicht:
UPDATE L60/K1 K1 SET K1_BUCHUNG = 'J' WHERE K1_KTOART = 'D' and length(trim(K1_KTONR)) = 5
Fehler: Token ANDLENGTH ungültig. Gültige Token: <ENDE DER ANWEISUNG>.
ach quatsch, lag nur am leerzeichen