운영관리

산술 연산 결과를 피젯수 또는 젯수의 자리 수에 맞춰 보자.

by 성진 posted Mar 01, 2016

오늘은 CUBRID의 산술 결과 부동 소숫점 자리 결과를 컨트롤 할 수 있는 옵션에 대해서 알아보자.


http://cubrid.org/manual/ko/9.3.0/admin/config.html#stmt-type-parameters

구문/타입 관련 파라미터

다음은 CUBRID에서 지원하는 SQL 구문 및 데이터 타입에 관한 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다.

파라미터 이름타입기본값최소값최대값
...



compat_numeric_division_scaleboolno  
...



compat_numeric_division_scale

compat_numeric_division_scale은 나눗셈 연산의 결과 값(몫)에 대하여 소수점 이하 자릿수를 몇 자리까지 표시할 것인가를 지정하기 위한 파라미터로 no로 설정하면 몫의 소수점 이하 자릿수가 9개가 되고, yes로 설정하면 몫의 소수점 이하 자릿수가 피연산자의 소수점 이하 자릿수에 따라 결정된다. 기본값은 no이다.

CUBRID를 사용 시 연산 결과가 타 DBMS와 다르게 나오는 것은 아니다. 

하지만 결과 값을 JAVA의 STRING으로 받아서 그냥 처리 하다 보면 예상과 다른 값을 얻게 된다.


다음과 같은 결과이다.


쿼리)

SELECT 1/3. AS val, TYPEOF(1/3.) AS val_type


결과)

 val 

 val_type 

 0.333333333 

 numeric (25, 9) 


하지만 cubrid.conf 에 compat_numeric_division_scale=yes로 설정 후 DB를 재 기동하면 다음과 같은 결과를 얻을 수 있다.


쿼리)

SELECT 1/3. AS val, TYPEOF(1/3.) AS val_type


결과)

 val 

 val_type 

 0.3

 numeric (17, 1) 


쿼리)

SELECT 1/3.71 AS val, TYPEOF(1/3.71) AS val_type


결과)

 val 

 val_type 

 0.26 

 numeric (19, 2) 


위의 결과와 같이 젯수 또는 피젯수의 소수점 이하 자리 수를 예상 할 수 있다.


<script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Articles

1 2 3 4 5 6 7 8 9 10