2016-04-14 15 views
0

Ich habe eine Tabelle mit über 16.000 Zeilen, die Geld auf Kundenrechnungen geschuldet. Leider wurde der geschuldete Betrag auf eine seltsame Weise aufgebaut - Geldbeträge als varchar gespeichert werden und für jede Zeit, wenn das Geld fällig ist, ist das Minuszeichen auf der rechten Seite der Zahl wie folgt aus:Convert Irregular Varchar zu Numerisch

Amount 
36.30 
21.48- 
132.65- 
87.91- 
1.20 

Ich habe eine neue Spalte zu meiner Tabelle hinzugefügt genannt Amount_num, und ich möchte ein Update auf meinem Tisch tun, die mir folgendes geben:

Amount Amount_num 
36.30  36.30 
21.48-  -21.48 
132.65-  -132.65 
87.91-  -87.91 
1.20  1.20 

ich habe versucht, das folgende Update-Abfrage:

UPDATE [CHARGE_TABLE] 
SET [Amount_num] = CAST ([Amount] as decimal (18,2)) 

Das gibt mir 'Fehler beim Konvertieren des Datentyps varchar in numerisch'. Was soll ich ändern?

Antwort

1

Dies sollte für Ihr seltsames String-Format funktionieren.

+0

Während dies das hier gezeigte Problem beheben sollte, kann das OP immer noch Probleme haben, wo die Daten nicht alle dieses Format sowie die normalen Zahlen entsprechen. Wenn Varchar verwendet wird, wenn es nicht sein sollte, wird häufig Junk gespeichert. Ich sage das nur, damit das OP die Antwort nicht ablehnt, wenn es immer noch nicht funktioniert. – HLGEM

+0

Das hat wirklich funktioniert! Zum Glück waren die Daten nicht so unordentlich, wie es hätte sein können - keine Wörter oder andere Symbole, die nicht dazugehörten. Danke euch beiden für eure Hilfe !! – mdarr