異なる外部ソースからいくつかの数値がNVarCharフィールドにあるデータを取得します。これまでは、CASTでREPLACEを使用して、数字が正しいかどうかを確認するための "、"が付いています。このように:VarCharを異なるカルチャフォーマットでFloatに変換する
select cast(replace('12,5',',','.') as float)
select cast(replace('12.5',',','.') as float)
これがうまく働いたが、今は千話の区切りがでもあり、データを取得し、次のように:。
select cast(replace('2.012,5',',','.') as float)
select cast(replace('2,012.5',',','.') as float)
それは壊れました。 NVarCharで数値を使用するデータ形式を検出する方法はありますか?
私は千話の区切りがある場合、それはうまく動作しますが、ないわけではない、文化パラメータでTRY_PARSEを使用しようとしました:
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
問題は、私はUPDATEでこれを使用しなければならないことであり、そのことを同じ表でデータ形式が異なる場合があります。
提案がありますか?
あなたはセパレータが存在し、どのような動作するようにCHARINDEX()
を使用することができます
あなたが実際に探しているフォーマットを教えてください。あなたは往来しているようです。 –