2012-02-02 150 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