Oracle에서 SQL Server로 데이터를 이동하여 여러 가지 이유로 개발자가 사용할 수 있도록하려고합니다. MSDN에서 Oracle NUMBER에서 SQL Server FLOAT 로의 적절한 매핑을 읽었습니다.Oracle과 SQL Server 사이의 데이터 정밀도 문제 - number와 float 값
우리는 이방인 수에 문제가 있습니다. 오라클에서는 5.2의 값을 가질 수 있으며, SQL Server에서는 정확하게 그렇지 않습니다. (한 자리에서 유효 자릿수가 크게 달라질 수 있습니다.)
동료가 Access를 사용하여 데이터 문제를보고있는 중이었습니다. SQL Server에서 하나의 필드가 5.2 인 거대한 테이블에서 쿼리를 수행했으며 Oracle과 동일한 개수를 가졌습니다.
select sum(samp_aliquot_size) from result where samp_aliquot_size = 5.6
오라클의
내가, 6260.8 얻을 SQL 서버에 내가 6260.80000000009를 얻을 : 오라클과 SQL 서버 모두에서select count(*) from result where samp_aliquot_size = 5.6
, 내가 그래서 그 수가 1118을 얻을, 나는 모두의 합계를했다 .
이 요구 사항은 데이터가 "완전 일치"라고합니다. 이를 달성하는 가장 좋은 방법은 무엇입니까?
내가 잘못 했나요? varchar로 필드를 가져 오면 올바르게 보이지 않아야합니까? id 필드가있는 temp SQL 테이블이 있고 float, decimal (38,17) 및 nvarchar (100) 필드가 세 번 나타납니다. 내 SSIS 패키지에서 첫 번째 직선을 복사하고 데이터 변환을 통해 소수점 17 자 및 유니 코드 문자열 길이 100을 다른 두 자릿수로 만듭니다. 값은 (0.005, 0.00500000000000000, 5.00000000000001E-3) 및 (0.1, 0.10000000000000000, 0)입니다.10000000000000001). 마지막 부분 인 STRING 필드가 왜 부정확합니까?! – thursdaysgeek
문자열은 부정확성을 나타내는 문자열이 아닙니다. 문자열 디스플레이에는 십진법 표시와 VS의 두 가지 위치가 더 있습니다. 나는 오라클로부터 전환하는 동안 반올림이 있다고 믿는다. 값을 SQL로 변환하기 전에 숫자를 Oracle의 문자 값으로 캐스팅하고 모든 데이터가 정확한지 확인하십시오. –
SQL Server 고객 지원팀에서이 aticle을 발견했습니다. http://blogs.msdn.com/b/psssql/archive/2010/11/01/how-it-works-sql-paring-of-number-s-numeric-and-float-conversions.aspx –