Hackschnitzel Geschrieben 18. Dezember 2006 Teilen Geschrieben 18. Dezember 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 18. Dezember 2006 Teilen Geschrieben 18. Dezember 2006 Mal abgesehen vom sinn des ganzen sollte das so gehen. insert into Test2 select A1, A2, A3, A4, (A3 + A4) from Test Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 18. Dezember 2006 Autor Teilen Geschrieben 18. Dezember 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 18. Dezember 2006 Teilen Geschrieben 18. Dezember 2006 Probier mal (ungetestet): insert into Test2 select A1, A2, A3, A4, ( Cstr(A3) & CStr(A4) ) from Test Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 18. Dezember 2006 Autor Teilen Geschrieben 18. Dezember 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 18. Dezember 2006 Teilen Geschrieben 18. Dezember 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. Dezember 2006 Teilen Geschrieben 18. Dezember 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 19. Dezember 2006 Autor Teilen Geschrieben 19. Dezember 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 19. Dezember 2006 Autor Teilen Geschrieben 19. Dezember 2006 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 19. Dezember 2006 Teilen Geschrieben 19. Dezember 2006 verwende TRIM oder eine ähnliche funktion, um die felder von leerzeichen zu befreien. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 20. Dezember 2006 Autor Teilen Geschrieben 20. Dezember 2006 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!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.