Oracle은 숫자 데이터 유형에서 후행 0을 유지합니까?
Oracle에서 숫자 데이터 유형은 다양한 정밀도로 숫자 값을 처리하도록 설계되었습니다. 그리고 규모. 그러나 숫자 값을 쿼리할 때 후행 0이 표시되지 않는 시나리오가 발생할 수 있습니다.
이 문제를 설명하려면 다음 예를 고려하십시오.
create table decimal_test(decimal_field number(*,10)); insert into decimal_test(decimal_field) values(10); insert into decimal_test(decimal_field) values(10.11); insert into decimal_test(decimal_field) values(10.100); insert into decimal_test(decimal_field) values(10.00); select * from decimal_test;
SQL Developer에서 이 테이블을 쿼리할 때, 결과는 다음과 같습니다.
10 10.11 10.1 10
보시다시피 숫자 값의 뒤에 오는 0이 표시되지 않습니다. 이 동작은 Java 코드에서 BigDecimal 값을 비교할 때 혼란을 일으킬 수 있습니다. 데이터베이스에 저장된 후 숫자의 소수 자릿수가 변경될 수 있기 때문입니다.
문제 이해
출력에 후행 0이 없는 것은 데이터 저장 문제가 아니라 표시 문제입니다. Oracle은 후행 0을 보존할 필요가 없는 형식으로 숫자 값을 내부적으로 저장합니다. 이는 후행 0이 중요한 것으로 간주되지 않기 때문입니다.
후행 0 처리
Oracle은 기본적으로 후행 0을 저장하지 않지만 이 문제를 처리할 수 있는 몇 가지 옵션이 있습니다.
표시 형식:
If 표시 목적으로 뒤에 0이 필요하면 값을 문자열로 변환할 때 형식 지정 기술을 사용할 수 있습니다. 예를 들어, 다음 Java 코드는 소수점 네 자리까지 숫자를 표시합니다.
System.out.printf("%10.4d\n", decimalValue);
배율 제어:
문제가 비교할 때 배율 차이와 관련된 경우 BigDecimal 값의 경우 비교하기 전에 소수점 이하 자릿수를 원하는 값으로 명시적으로 설정할 수 있습니다. 이렇게 하면 값이 올바르게 비교됩니다.
위 내용은 오라클의 숫자 데이터 유형은 후행 0을 유지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!