[FIXED] Wandeln Sie verschiedene wissenschaftliche Schreibweisen in Zahlen um

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, NULLanstatt 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

Geben Sie hier die Bildbeschreibung ein


Beantwortet von –
John Cappelletti


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like