Ausgabe
Ich habe eine Tabelle mit einem Varchar-Feld, das Werte mit den folgenden Strukturen enthält:
1.69665589928627E-06
3.57807129940753E-07
4.77823428809643E-08
1.58324837684631E-12
1.57160684466362E-13
0.0062
10.1595896112714
0.0505828946151305
0.739
0
Wie konvertiert man diese Werte in Numeric(12,6)
?
Ich habe versucht mit CAST
:
SELECT CAST (NUM_AREA AS NUMERIC(12,6)) FROM APP
SELECT CAST(CAST(NUM_AREA AS FLOAT) AS NUMERIC(12,6)) FROM APP
Aber der folgende Fehler wird generiert:
Msg 8114, Level 16, State 5, Line 1 Fehler beim Konvertieren des Datentyps nvarchar in numerisch.
Lösung
Als nvarchar
, vermute ich, dass Sie einige falsche Daten haben.
Verwenden Sie try_convert()
die eine zurückgibt, NULL
anstatt einen Fehler zu werfen
Beispiel oder dbFiddle
Declare @YourTable Table ([Num_Area] nvarchar(50)) Insert Into @YourTable Values
('1.69665589928627E-06')
,('3.57807129940753E-07')
,('4.77823428809643E-08')
,('1.58324837684631E-12')
,('1.57160684466362E-13')
,('0.0062')
,('10.1595896112714')
,('0.0505828946151305')
,('0.739')
,('0')
,('Not A NUmber') -- WOULD THROW AN ERROR USING CONVERT or CAST
,('1.57160684466362E-55') -- REALLY SMALL NUMBER, YOU'LL JUST GET ZERO
Select *
,try_convert(numeric(12,6),try_convert(float,Num_Area))
from @YourTable
--**To Identify the Problem Rows**
Select *
From @YourTable
Where try_convert(float,Num_Area) is null
and Num_Area is not null
Ergebnisse
Beantwortet von – John Cappelletti
Antwort geprüft von – Mary Flores (FixError Volunteer)