2012-02-02 16 views
1

異なるタイプのカラムに基づいて2つのテーブルを結合する必要があります。最初の列はnvarchar(50)で、2番目の列の型がfloatです。 nvarchar-columnには浮動小数点値の文字列表現が含まれていますが、ドイツ語のローカライズで書かれています。つまり、カンマが小数点記号として使用されます。CONVERTのローカライゼーション

例:nvarcharカラムのfloat 26.1 istは26,1と表されます。

私はJOIN ... ON firstcolumn = CONVERT(NVARCHAR(50), secondcolumn)を試しましたが、これはすべての数字に対して分数を使用しないで動作します。端数のある列は「26.1」に変換されますが、明らかに「26,1」には一致しません。

使用すると、SET LANGUAGE Germanは機能しませんでした。

CONVERT文にドイツ語のローカライゼーションを使用する方法があるので、ドットの代わりにカンマが使用されますか?または、問題を解決するためにREPLACEを使用する必要がありますか?

答えて

2

あなたはこの構造を使用するために、REPLACE

として
firstcolumn = CAST(REPLACE(secondcolumn, ',', '.') as float) 

を使用しますが、浮動小数点型を比較す​​るときに非常に慎重する方が良い場合が必要です:

ABS(firstcolumn - CAST(REPLACE(secondcolumn, ',', '.') as float)) < @epsilon 
@epsilonが許容誤差である

、 say = 0.001

+0

私は文字列表現を比較するので、浮動小数点問題を処理する必要はありません。とにかくありがとう。 – okrumnow

関連する問題