none
Insert into Tabelle mit Formatierung RRS feed

  • Allgemeine Diskussion

  • Ich möchte aus Tabelle A die Daten in Tabelle B übernehmen, und dabei die Daten umformatieren.

    TABELLE A                                                              TABELLE B

    Order_nr   nvarchar (20) NOT NULL                        Order_nr    int     NULL

    Preis         nvarchar (20) NULL                                Preis          float  NULL

    TABELLE A                                                               ERGEBNIS TABELLE B

    Order_nr       Preis                                                   Order_nr       Preis

    3455             12,57                                                  3455             12,57

    5655                  X                                                    5655              NULL

    5554               9,56                                                  5554               9,56

    Es ist zu beachten, dass in der "Tabelle A" im Feld "Preis" teilweise ein "X" eingetragen ist, wenn kein Preis vorhanden ist.

    Kann mir jemand helfen, wie diese Insert-Anweisung funktionieren soll?

    Vielen Dank für Eure Hilfe.

    Montag, 24. April 2017 13:01

Alle Antworten

  • Hallo Fraport,

    Eine Lösung wäre, X-Räume in Nullwerte zu konvertieren:

    UPDATE table 
    SET col1 = NULL 
    WHERE col1 = 'X'

    Ein ähnliches Problem findest Du in diesem Thread:
    How to convert empty spaces into null values, using SQL Server?
    Für explizite Konvertierungen werden die CAST- oder CONVERT-Funktionen verwendet. Weitere Informationen findest Du hier:
    Datentypkonvertierung (Datenbankmodul)

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 27. April 2017 11:41
    Administrator
  • Hallo,
    mit der Annahme das es nur das X ist welches zu einer 0 werden soll:

    insert into TabelleB (Order_nr,Preis)
    select 
      cast(order_nr as int)
    , cast(replace(Preis,'X','0') as float)
    from TabelleA

    HTH

    Grüße Alexander

                                                     
    Donnerstag, 27. April 2017 12:30
  • insert into TabelleA (Order_nr, Preis)
    select order_nr, iif(preis is null, 'X', convert(varchar(n), preis))
    from tabelleB

    Der Trick ist ja, dass der NULL-Wert mit 'X' ersetzt werden soll, während der Zahlwert als Zeichenkette umgewandelt wird.

    Der iif-Ausdruck vereinfacht den Case-Ausdruck:

    case when preis is null then 'X' else convert(varchar(n), preis) end

    Donnerstag, 27. April 2017 13:29
  • Hallo,

    wenn man glaubt das ein Preis NULL eine reale Sache ist dann sicher.
    Versuche Dir die Auswertungen vorzustellen. Alle winden sich um die NULL herum.
    hilfreich? Wohl eher nicht.
    Hat man etwas kostenlos übergeben sollte das aus meiner Sicht mit einer 0 beim Preis und einer Klassifizierung des Produktes bzw. der Position abgelegt sein. Aber klar so geht es sicher auch eine Weile.

    Grüße Alexander

    Donnerstag, 27. April 2017 14:44