2012-02-02 64 views
1

我需要根據不同類型的列連接兩個表。第一列是nvarchar(50),第二列是float。 nvarchar-column包含浮點值的字符串表示形式,但是用德語本地化書寫,這意味着逗號用作小數點分隔符。CONVERT的本地化

示例:浮點數26.1 ist在nvarchar列中表示爲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是可以接受的誤差,說= 0.001

+0

我會比較字符串表示,所以我不必處理浮動問題。不管怎麼說,還是要謝謝你。 – okrumnow 2012-02-02 14:15:17