[Oracle] 오라클 소수점 존재 여부 체크 및 소수점 이하 값 구하기
- 데이터베이스/오라클
- 2020. 6. 24.
오라클 쿼리를 작성하다 보면 수치값에 소수점이 존재하는지 또는 정수는 버리고 소수점 이하의 값만 잘라서 사용해야 할 때가 있다. 위의 상황을 한 번에 해결할 수 있는 함수가 없기 때문에 직접 연산을 해야 한다.
소수점 체크 |
소수점 체크 방법
TRUNC( ) 함수를 이용하는 방법
수치 값에서 TRUNC 함수를 사용하여 소수점 이하를 버리고 동일한 값이면 소수점이 없다
WITH temp AS (
SELECT 1.25 AS num1
, 1.0 AS num2
, 0.25 AS num3
, 1 AS num4
FROM dual
)
SELECT num1 --1.25
, num2 --1.0
, num3 --0.25
, num4 --1
, CASE WHEN num1 <> TRUNC(num1) THEN 'Y' ELSE 'N' END AS num1_result
, CASE WHEN num2 <> TRUNC(num2) THEN 'Y' ELSE 'N' END AS num2_result
, CASE WHEN num3 <> TRUNC(num3) THEN 'Y' ELSE 'N' END AS num3_result
, CASE WHEN num4 <> TRUNC(num4) THEN 'Y' ELSE 'N' END AS num4_result
FROM temp
INSTR( ) 함수를 이용하는 방법
INSTR 함수를 사용하여 수치 값에 쩜(".")이 있는지 체크한다
WITH temp AS (
SELECT 1.25 AS num1
, 1.0 AS num2
, 0.25 AS num3
, 1 AS num4
FROM dual
)
SELECT num1 --1.25
, num2 --1.0
, num3 --0.25
, num4 --1
, CASE WHEN INSTR(num1, '.') > 0 THEN 'Y' ELSE 'N' END AS num1_result
, CASE WHEN INSTR(num2, '.') > 0 THEN 'Y' ELSE 'N' END AS num2_result
, CASE WHEN INSTR(num3, '.') > 0 THEN 'Y' ELSE 'N' END AS num3_result
, CASE WHEN INSTR(num4, '.') > 0 THEN 'Y' ELSE 'N' END AS num4_result
FROM temp
소수점 이하 값 구하기 (정수 버리기)
수치 값에 TRUNC 함수로 소수점을 버린 값을 빼면 소수점 이하의 값만 남는다
WITH temp AS (
SELECT 1.25 AS num1
, 1.0 AS num2
, 0.25 AS num3
, 1 AS num4
FROM dual
)
SELECT num1 --1.25
, num2 --1.0
, num3 --0.25
, num4 --1
, num1 - TRUNC(num1) AS num1_result
, num2 - TRUNC(num2) AS num2_result
, num3 - TRUNC(num3) AS num3_result
, num4 - TRUNC(num4) AS num4_result
FROM temp