Varchar-zu-Dezimal-Konvertierung im db2
Ich versuche zu konvertieren varchar
Feld decimal
Feld in db2
aber ich erhalte eine Fehlermeldung
AMOUNT
Feld ist ein varchar
Feld aus, das konvertiert werden muss, um decimal(31,3)
Da unten ist meine Abfrage
SELECT CAST(ROUND(TRIM(AMOUNT),3) AS DECIMAL(31,3))
FROM TABLENAME
Hinweis: AMOUNT field (varchar)
hat eine NULL
- Wert sowie
Beispiel-Werte:
7.324088
-42.97209
854
NULL
6
6
350
-6
15.380584
1900
Bekomme ich die folgende Fehlermeldung:
Ungültiges Zeichen gefunden in einer Zeichenfolge-argument der Funktion
"DECFLOAT". SQLSTATE=22018
Die Tatsache, dass es sagt:
DECFLOAT
(im Gegensatz zu DECIMAL
) zeigt an, dass ROUND(...)
ist, was balking. Das ist eine Gleitkommazahl (hat einen Verschiebebereich), obwohl, weil es dezimal-basiert kann es tatsächlich zu speichern Dinge wie .1
- ist das okay? Versuchen Sie herauszufinden, welche Art von Wert ist tatsächlich wirft dieser Fehler. Sie haben alpha-Zeichen in dieser Spalte? Ein Weg, um zu versuchen, dies zu tun, eine geordnete INSERT
in eine andere Tabelle (ohne Transaktionen/ROLLBACK
), dann die lookup-Wert nach dem letzten eingefügt.
InformationsquelleAutor Rikin | 2014-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen zu tun, wie
Das problem ist nicht eine
null
Wert - alle Funktionen in dieser Kette sind null-sicher.InformationsquelleAutor Rahul
Sind Sie sicher, dass Ihre Eingabe-Werte entsprechen, mit den gleichen Gebietsschema. Ich meine, ist das minus-Zeichen ein minus-oder die MS-Word-minus? Was ist das Dezimaltrennzeichen? In einigen Sprachen ist ein Komma statt eines Punktes.
Die coalesce-Funktion ruft das erste nicht-null-Wert aus dem Parameter. Im Beispiel:
Wenn der Betrag null ist, wird 0 zurückgegeben.
Sind Sie sicher, dass Sie einen null-Wert übergeben oder einen string mit den Zeichen 'NULL', weil in diesem Fall müssen Sie konvertieren die 'NULL' auf '0' mit der ersetzen-Funktion.
'NULL'
auch.InformationsquelleAutor AngocA