Veröffentlicht 18. Dezember 200618 j Hallo Leute, folgendes Problem. Ich hab eine Tabelle. Diese Tabelle will ich spiegel und um eine Spalte ergänzen. Diese neue Spalte soll sich aus zwei anderen Spalten zusammen setzen. Also meine Tabelle heisst Test und hat die Attribute A1, A2, A3, und A4. Meine Tabelle Test2 soll folgendermaßen aussehen: A1, A2, A3, A4 und A5, wobei A5 den Inhalt von A3 + A4 hat. Alle Attribute sind Integer Werte. So weit bin ich: Create Table Test2( A1 integer not null, A2 integer not null, A3 integer not null, A4 integer not null, A5 .................... insert into Test2 select A1, A2, A3, A4, ....................... from Test Danke Gruss hackschnitzel
18. Dezember 200618 j Mal abgesehen vom sinn des ganzen sollte das so gehen. insert into Test2 select A1, A2, A3, A4, (A3 + A4) from Test
18. Dezember 200618 j Das hab ich schon ausprobiert. Er rechnet dann die Summe aus (egal, ob ich in der Deklaration char oder integer nehme), genau das will ich vermeiden. Er soll aus 234234 und 111 gleich 234234111 machen.
18. Dezember 200618 j Probier mal (ungetestet): insert into Test2 select A1, A2, A3, A4, ( Cstr(A3) & CStr(A4) ) from Test
18. Dezember 200618 j Dann krieg ich als Fehlermeldung: "Data Type "A3" does not match a Defined Type name". Also A3 und A4 sind integer Werte. Und es ist egal, ob ich mein A5 als integer oder als char nehme, es kommt diese Meldung.
18. Dezember 200618 j Also dann so, dieses mal getestet (A5 ist char): insert into Test2 (A1, A2, A3, A4, A5) select A1, A2, A3, A4, ( Cstr(A3) & CStr(A4) ) from Test1; Anmerkung: dein o.a. Beispiel kann so nicht stimmen: wenn A3 wirklich 234234 enthält, ist es auf keinen Fall ein integer. Grüße Reinhold
18. Dezember 200618 j es kommt wie immer darauf an, welches DBMS verwendet wird - demzufolge reagiert eine solche operation auch unterschiedlich. ich kann hier nur herauslesen, dass werte konkateniert und nicht addiert werden sollen - und das heisst, dass auch eine dafür ausgelegte funktion dafür verwendet werden sollte, weil die nämlich in den meisten fälle mit abweichenden datentypen wie INT/NUMBER anstelle von CHAR/VARCHAR umgehen kann. abhängig von der art des DBMS kann die funktion natürlich unterschiedlich heissen: bei MySQL und oracle wäre dies z.b. CONCAT. s'Amstel
19. Dezember 200618 j Also beim Beispiel handelt es sich um keine Originaldaten. Deswegen ist die Zahl so lang. Das sollte aber egal sein. Die Versionsnummer finde ich irgendwie nicht heraus. Das Programm mit dem ich arbeite, ist ein SQL-Assistent integriert in einen anderen Programm, daher sehe ich nur diese Versionsnummer. Auf jeden Fall mal Danke, werde die Vorschläge testen und danach Feedback geben.
19. Dezember 200618 j Ich habs jetzt mit CONCAT gemacht. Mein A5 hab ich als char(29) deklariert und in der select anweisung hab ich CONCAT(A3,A4) geschrieben. Das einzige was mich jetzt noch stört ist, dass er mir zwischen die beiden Nummern ein Leerzeichen setzt. Mein A5 sieht jetzt so aus: 234234 111 Kann man das noch umgehen?
19. Dezember 200618 j verwende TRIM oder eine ähnliche funktion, um die felder von leerzeichen zu befreien. s'Amstel
20. Dezember 200618 j Es hat jetzt geklappt. Folgendermaßen: CONCAT(A3,LTRIM(A4)) Danke damit ist mein Problem gelöst. Wünsche euch noch frohe Weihnachten und einen guten Rutsch ins neue Jahr!!!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.