0

Informatica 9.1을 통해 10 진수 값을 varchar로 변환하는 동안 문제가 있습니다. 원본과 대상 모두 Oracle에 있습니다. 자르기 기능을 사용하면 자릿수의 값이 자동으로 "0.01"줄입니다. 내 소스 데이터 형식은 Amount (Decimal (38,15))입니다. 내가 다음과 같이자를 후 문자열로 변환하려면 다음 식을 사용하고 있습니다 : TO_CHAR (TRUNC (Amount, 2)). SourceInformatica Powerecenter 9.1.0 10 진수 스케일 문제

내 대상 데이터 형식은 varchar (255)입니다. 아래는 목표로하는 데이터의 스냅입니다. 절단 후 9.52의 값에 대해 스냅 샷과 같이 값이 9.51로 변경되었습니다. Target

누구든지 문제를 해결할 수 있습니까?

+0

이것은 올바르게 보이지 않습니다! 그 분야에 다른 논리가 없다고 확신합니까? – Samik

+0

TRUNC (Amt, 2)와 같은 값을 잘라 버리고 varchar로 변환하는 것 외에; 어떤 논리도 없다. –

답변

1

이것은 데이터를 보는 방식에 영향을 줄 수 있습니다. 예를 들어 값이 9.5185라고 가정합니다. 클라이언트 도구에서 볼 때 9.52로 반올림되어 표시됩니다. TRUNC 함수는 마지막 숫자를 자르고 9.51로 남겨 둡니다.

+0

이전에 언급했듯이 소스에서 오는 값은 9.520000000000000이고 소수 자릿수 2자를 자르고 varchar로 변환하는 것을 제외하고는 다른 논리가 없습니다. –

+0

값이 9.520000000000000임을 어떻게 알 수 있습니까? 당신이 보거나 확인하는 방법은 무엇입니까? 일부 응용 프로그램에서는 값을 표시하기 전에 암시 적 반올림을 수행합니다. – Maciejg

1

Maciej는 대부분 응용 프로그램에서 9.52로 표시되는 것은 실제로 9.51999999999에 저장됩니다. 부탁을 들어서 2 대신 10 곳을 자르고 결과를 게시 할 수 있습니까?

0

앞에서 설명한대로 to_char 함수의 동작 방식과 인포매티카에서의 number round 처리 방법이 있습니다. 이 더 많은 "정밀도"를 원하는 경우 도움이 덜 인포매티카 PowerCenter는 가이드에서

라운딩 수 : 15 일 큰 정밀도와

PowerCenter는 통합 서비스로 변환 진수 포트를 더블과 TO_CHAR를 반환 값은 과학 표기법입니다.

이 문제를 방지하려면 고정밀 도로 사용해야합니다. 당신이 높은 정밀도를 사용하면, PowerCenter는 높은 정밀도

이 문제는 높은 정밀도 사용을 선택 해결하려면 인적 또는 탭에서 워크 플로우에 체크 박스 (28)

주의 정밀도로 소수점을 지원

워크 플로 관리자에서 편집 할 세션 작업을 엽니 다. 속성 탭을 클릭하십시오. 고정밀 사용 옵션을 선택하십시오. 세션을 닫고 저장하십시오.

PowerCenter session using TO_CHAR on decimal field