Anmelden

View Full Version : SQL-Problem



woodstock99
28-03-08, 08:16
Hallo,

ich habe folgendes Problem.
Es soll das Feld a.PRGRAR ab der Stelle 4 mit 2 Nullen aufgefüllt werden wenn die Artikelnummer der Datei A in der Datei B vorhanden ist und die Stellen 4 und 5 im Feld A.PRGRAR ' ' sind.

Dieser SQL befehl wird angemeckert.

update WWSTGD/alarst A set SUBSTRING(A.PRGRAR, 4, 2) = '00'
where A.ARNRAR IN
(SELECT C.ARNRAR from WWSMIG/FALSCH C) and
SUBSTRING(A.PRGRAR, 4, 2) = ' '

es kommt folgende Fehlermeldung:
Token ( ungültig. Gültige Token: =.

Meine Frage: Kann man einen Teil eines Feldes nicht updaten sondern nur das ganze?? Ich bekomm das heut nicht mehr gebacken :( .

schmidde
28-03-08, 08:51
Hallo,

ich würde es mit folgendem SQL lösen:

update WWSTGD/alarst A set A.PRGRAR = substr(A.PRGRAR, 1, 3) concat '00' concat substr(A.PRGRAR, 6, x)
where A.ARNRAR IN
(SELECT C.ARNRAR from WWSMIG/FALSCH C) and
SUBSTRING(A.PRGRAR, 4, 2) = ' '

Dabei ist x die Länge des Feldes Feldes A.PRGRAR minus 5.
Gruß,

Frank

woodstock99
28-03-08, 09:06
Vielen dank hat funktioniert. Aber evtl kann mir jemand sagen was an meinem SQL-Befehl falsch war.Würde mich sogar noch mehr Interessieren denn viele Wege führen nach Rom :)

schmidde
28-03-08, 09:16
Ich stand auch schon mal vor diesem Problem und bin der Meinung, gelesen zu haben, daß eine solche Manipulation eines Teiles eines Feldes nicht erlaubt ist.

woodstock99
28-03-08, 09:25
Naja, ich denk man(n) muß nicht immer alles verstehen:D.Aber trotzdem Danke für deine Hilfe

Fuerchau
28-03-08, 09:26
SUBSTRING ist eine Funktion, liefert also ein Ergebnis und kann daher nicht verändert, also zugewiesen werden.

Alle SQL-Funktionen (auch eigene) können nur auf der linken Seite einer Zuweisung verwendet werden.

zannaleer
28-03-08, 09:52
Hallo Schmidde,

Du arbeitest nicht zufällig in Kirchheim Teck bei einer Spedition? Schalt mal die Möglichkeit frei, Dir private Nachrichten zu schicken.

Gruß
Alexander

schmidde
28-03-08, 10:08
Hallo Alexander,

ja, mehr in Deinen privaten Mails.

Gruß,

Frank