PDA

View Full Version : SQL Befehl?



mikex01
01-06-06, 08:15
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))

mikex01
01-06-06, 09:14
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.

mikex01
01-06-06, 09:31
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'

Fuerchau
01-06-06, 09:35
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%'"

mikex01
01-06-06, 10:05
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>.

mikex01
01-06-06, 10:06
ach quatsch, lag nur am leerzeichen

mikex01
01-06-06, 11:55
ES HAT GEKLAPPT !

DANKE!