> 데이터 베이스 > MySQL 튜토리얼 > 오라클의 숫자 데이터 유형은 후행 0을 유지합니까?

오라클의 숫자 데이터 유형은 후행 0을 유지합니까?

Barbara Streisand
풀어 주다: 2024-12-21 15:12:10
원래의
643명이 탐색했습니다.

Does Oracle's Number Data Type Preserve Trailing Zeros?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿