Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

neue Spalte = Spalte1+Spalte2

Empfohlene Antworten

Veröffentlicht

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

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.

Probier mal (ungetestet):

insert into Test2

select A1, A2, A3, A4, ( Cstr(A3) & CStr(A4) )

from Test

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.

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

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

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.

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?

verwende TRIM oder eine ähnliche funktion, um die felder von leerzeichen zu befreien.

s'Amstel

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.