오라클 데이터 검색 - Scalar Function(1) 숫자형 함수
지난 시간에 컬럼 함수에 대해 알아봤습니다.
이번 시간에는 스칼라 함수에 대해 알아보겠습니다. Scalar란 수학에서 '실수로 표현할 수 있는 수량'이라는 뜻입니다.
스칼라 함수에는 크게 숫자형, 문자형, 날짜형, 변환형 함수 등으로 나눌 수 있습니다. 물론 이 분류가 정확한 것은 아니지만 여러 함수들 중에서 기능별로 비슷한 것끼리 묶어 보면 대략 이와 같음을 알 수 있습니다.
이번 시간에는 스칼라 함수 중에서 숫자형 함수에 대해서만 알아보도록 하겠습니다.

그렇게 어렵지 않죠? 오라클 기초 과정이어서 이 수준을 크게 넘어서지 않을 것입니다.
시간이 정말 빠르네요. 벌써 수요일입니다.
이상 동주 아빠 손병목이었습니다.

이번 시간에는 스칼라 함수에 대해 알아보겠습니다. Scalar란 수학에서 '실수로 표현할 수 있는 수량'이라는 뜻입니다.
스칼라 함수에는 크게 숫자형, 문자형, 날짜형, 변환형 함수 등으로 나눌 수 있습니다. 물론 이 분류가 정확한 것은 아니지만 여러 함수들 중에서 기능별로 비슷한 것끼리 묶어 보면 대략 이와 같음을 알 수 있습니다.
이번 시간에는 스칼라 함수 중에서 숫자형 함수에 대해서만 알아보도록 하겠습니다.

- 숫자형 함수의 종류
지난 시간의 컬럼 함수처럼 함수 이름만 봐도 그 기능을 이해할 수 있습니다.
ROUND 숫자를 반올림합니다.
TRUNC 숫자를 버림합니다.
MOD 어떤 수로 나누었을 때 나머지 구합니다.
CHR ASCII 값에 해당하는 문자를 구합니다.
POWER 거듭제곱을 구합니다.
SQRT 제곱근을 구합니다.
SIGN 양수인지 음수인지 0인지를 구별합니다.
- ROUND와 TRUNC 함수
- 형식
ROUND(숫자값, 자릿수)
TRUNC(숫자값, 자릿수)
- 소수점 이하 유효 자릿수까지 반올림하거나 버립니다.
- 자릿수의 수가 양수이면 소수 자리 이하, 음수이면 정수 부분 자리를 의미합니다. 아래 예를 보세요.
- SELECT ROUND (35.125, 2)
FROM DUAL;
35.125를 소숫점 이하 두자리까지 보이도록 반올림하라는 뜻입니다. 즉 소숫점 이하 세번째 자리에서 반올림해야 두번째자리까지 보이겠죠.
결과는 35.13이 됩니다.
여기서 DUAL이라는 테이블은 뭘까요?
지금까지 실습한 적이 없으니까 새로 만들까요? 아닙니다.
DUAL은 가상의 테이블입니다. 한 행 한 열로 이루어지 가상의 테이블입니다. 왠 가상의 테이블? 가상 테이블은 특별히 테이블이 필요없는 문장에서 어쩔 수 없이 형식적으로 붙여주는 겁니다.
위에서 보듯이 35.125를 소수점 이하 두자리까지 구하라는 것인데, 이를 위해 특별히 다른 테이블을 참조할 필요가 없습니다. 이럴 때 그냥 문법적으로 FROM 뒤에 테이블 이름이 와야하니까 DUAL이라는 형식적인 테이블 이름을 쓴 겁니다. 제가 만든 게 아니라 오라클에서 기본 제공되는 것입니다.
- SELECT ROUND (35.125, -1)
FROM DUAL;
직접 실행해 볼까요?

35.125를 정수 일의 자리에서 반올림하라는 것입니다. 따라서 결과는 40이 됩니다.
만약 ROUND (35.125, 0)이라고 하면 결과는 35가 됩니다.
또 만약 ROUND(1357.123, -2)라고 하면 결과는 1400이 됩니다.
아래의 함수들도 한번씩 실행해 보세요.
- SELECT TRUNC (35.125, 1)
FROM DUAL;
35.125를 소수점 이하 첫째자리까지 보이도록 버리라는 뜻입니다. 따라서 결과는 35.1이 됩니다.
- 형식
- MOD 함수
- 형식
MOD(숫자값, n)
- 숫자값을 n으로 나눈 나머지를 구합니다.
- 다음 예만 보면 쉽게 이해가 될 겁니다.
SELECT MOD (100, 12)
FROM DUAL;
100을 12로 나눈 나머지를 구하라는 거죠... 으하하 계산이 안되죠? 계산기를 두들기든지 아니면 연습장에서 계산을 해보세요.
몫이 8이고 나머지가 4가 됩니다. 그러니까 결과는? 바로 4입니다.
- 형식
- POWER 함수
- 영어로 POWER는 수학에서 거듭 제곱이라는 의미입니다. 따라서 거듭 제곱을 구하는 함수입니다.
- SELECT POWER(10,3)
FROM DUAL;
10의 3제곱은 1000입니다. 설마 이거 이해 안되는 분 없죠? ^^
- 영어로 POWER는 수학에서 거듭 제곱이라는 의미입니다. 따라서 거듭 제곱을 구하는 함수입니다.
- SQRT 함수
- Square Root라는 뜻입니다. 풀이하자면 제곱 뿌리(?). 제곱근입니다.
- SELECT SQRT (25)
FROM DUAL;
루트 25는? 5입니다.
- Square Root라는 뜻입니다. 풀이하자면 제곱 뿌리(?). 제곱근입니다.
- SIGN 함수
- 양수이면 1, 음수이면 -1, 0이면 0의 값을 반환합니다.
- SELECT SIGN (10),
SIGN(-100),
SIGN(0)
FROM DUAL;
결과가 어떻게 될까요? 궁금하면 직접 실행해 보시든가 아니면 오른쪽 괄호 사이를 마우스로 드래그해보세요. 답이 보입니다. (1, -1, 0)
- 양수이면 1, 음수이면 -1, 0이면 0의 값을 반환합니다.
- CHR 함수
- 주어진 숫자의 ASCII CODE 값을 구합니다.
- SELECT CHR (65)
FROM DUAL;
아스키 코드값 65는 영문 대문자 'A'에 해당됩니다. 따라서 결과는 'A'가 되죠.
아스키 코드는 텍스트 파일을 위한 가장 일반적인 형식입니다. American Standard Code for Information Interchange의 약자입니다. 미국의 표준 코드이니 당연히 전세계 표준이 되겠죠. 기분은 나쁘지만...
아스키 코드를 전체적으로 다 보고 싶으시면 여기를 클릭하세요.
- 주어진 숫자의 ASCII CODE 값을 구합니다.
그렇게 어렵지 않죠? 오라클 기초 과정이어서 이 수준을 크게 넘어서지 않을 것입니다.
시간이 정말 빠르네요. 벌써 수요일입니다.
이상 동주 아빠 손병목이었습니다.
