2012-02-02 2 views
1

다른 유형의 열을 기반으로 두 테이블을 조인해야합니다. 첫 번째 열은 nvarchar(50)이고 두 번째 열은 float 인 열입니다. nvarchar-column은 float 값의 문자열 표현을 포함하지만 독일어 지역화로 작성됩니다. 즉 쉼표가 소수 구분 기호로 사용됩니다.CONVERT 현지화

예 : nvarchar 열에서 float 26.1은 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

나는 문자열 표현을 비교할 것이므로, float 문제를 다루지 않아도된다. 어쨌든 고마워. – okrumnow