Aus verschiedenen externen Quellen bekomme ich Daten, in denen sich einige Zahlen in einem NVarChar-Feld befinden. Bis jetzt habe ich einen REPLACE mit einem CAST verwendet, um sicherzustellen, dass Zahlen mit einem "," in die richtige Richtung geworfen werden. Wie folgt aus:VarChar in Float mit unterschiedlichem Kulturformat konvertieren
select cast(replace('12,5',',','.') as float)
select cast(replace('12.5',',','.') as float)
Das hat funktioniert ganz gut, aber jetzt habe ich Daten bekommen, wo es auch ein Tausendertrennzeichen in wie folgt aus:.
select cast(replace('2.012,5',',','.') as float)
select cast(replace('2,012.5',',','.') as float)
Es gebrochen. Gibt es eine Möglichkeit festzustellen, welches Datenformat in einem NVarChar mit einer Nummer verwendet wird?
Ich habe versucht, TRY_PARSE mit einem Kultur Parameter zu verwenden, es funktioniert gut, wenn es ein Tausendertrennzeichen, aber nicht ohne:
SELECT @Fuelunits =
CASE
WHEN ISNUMERIC(TRY_PARSE(@Hoeveelheid AS decimal(9,2) USING 'nl-NL')) = 1
THEN CAST(TRY_PARSE(@Hoeveelheid AS decimal(9,2) USING 'nl-NL') AS FLOAT)
ELSE CAST(TRY_PARSE(@Hoeveelheid AS decimal(9,2) USING 'en-US') AS FLOAT)
END
Das Problem ist, dass ich dies in einer UPDATE verwenden müssen und dass diese Das Datenformat kann in derselben Tabelle abweichen.
Irgendwelche Vorschläge?
Sagen Sie uns, welches Format Sie eigentlich suchen. Es scheint, dass du hin und her gehst. –