ORACLE 내부함수에 대해 알아보도록 하겠습니다. 내부함수 종류에는 문자열, 날짜, 변환, 숫자 집계 함수가 있습니다. 집계함수도 있지만 지난 포스팅(오라클 GROUP BY, HAVING, 그룹함수)에서 설명한 관계로 생략하겠습니다. 문자열 함수에는 CONCAT, SUBSTR, LENGTH, LOWER, UPPER 등이 있고 날짜 함수에는 SYSDATE, MONTHS_BETWEEN, ADD_MONTHS, EXTRACT 등이 있습니다. 변환함수는 TO_CHAR, TO_NUMBER, TO_DATE가 있으며 숫자함수에는 ABS, ROUND, TRUNC, MOD, POWER 등이 있습니다.
문자열 함수
문자열 함수는 문자를 조작하기 위한 함수입니다. CONCAT은 두 개 이상의 문자열을 연결하기 위한 함수이고 SUBSTR은 문자열의 일부분을 추출하는 함수이고 INSTR은 문자열에서 특정 문자열을 찾거나 문자 위치를 찾기 위한 함수입니다. TRIM은 문자양옆에 공백을 제거하고 LENGTH는 문자열의 길이를 반환합니다. LENGTHB는 바이트단위의 문자열길이를 반환합니다. REPLACE는 문자열에서 원하는 문자열을 바꿀 수 있고 LOWER는 문자열을 소문자로 변환, UPPER는 문자열을 대문자로 변환합니다. LPAD는 문자열의 왼쪽에 공백이나 특정문자열을 삽입할 수 있으며 RPAD는 문자열의 오른쪽에 공백이나 특정문자열을 삽입할 수 있습니다.
-- 문자열 함수 예제입니다.
SELECT CONCAT('A', 'B') -- 'AB'
, 'A' || 'B' -- 'AB' CONCAT과 동일하게 사용할 수 있습니다.
, LOWER('AAA') -- 'aaa'
, UPPER('aaa') -- 'AAA'
, SUBSTR('TISTORY', 3,3) --'STO'
, INSTR('CODE', 'D') -- 3
, TRIM(' AAAAAA BB ') -- 'AAAAAA BB'
, LPAD('SQL', 5, '*') -- '**SQL'
, RPAD('SQL', 5, '*') -- 'SQL**'
FROM DUAL;
날짜 함수
날짜 함수는 ORALCE SQL의 날짜를 제어하는 함수입니다. SYSDATE는 현재 날짜와 시간을 반환하고 ADD_MONTHS는 특정 날짜에 월을 더하는 함수이고 MONTHS_BETWEEN 함수는 날짜 간의 개월 수를 반환하는 함수입니다. NEXT_DAY는 특정 날짜의 특정일만큼 이후의 날짜를 표시합니다. LAST_DAY는 특정 날짜가 속한 달의 마지막 일을 반환하는 함수입니다. ROUND와 TRUNC는 숫자함수에서 다루겠지만 날짜함수에서도 사용을 할 수 있습니다. 특정날짜에 ROUND 함수를 사용하면 특정날짜를 반올림해서 보여줍니다. TRUNC는 특정날짜의 시간을 제거할 수 있습니다.
-- 날짜 함수 예제입니다.
SELECT SYSDATE -- '23/04/26'
, MONTHS_BETWEEN(TO_DATE('20230101', 'YYYYMMDD'), TO_DATE('20230501', 'YYYYMMDD')) -- -4
, ADD_MONTHS(TO_DATE('20230426', 'YYYYMMDD'), 6) -- '23/10/26'
, NEXT_DAY(TO_DATE('20230426', 'YYYYMMDD'), 2) -- '23/05/01'
, LAST_DAY(TO_DATE('20230426', 'YYYYMMDD')) -- '23/04/30'
, ROUND(TO_DATE('20230426', 'YYYYMMDD')) -- '23/04/27'
, TRUNC(TO_DATE('20230426101010', 'YYYYMMDDHH24MISS')) -- '23/10/26'
FROM DUAL;
변환 함수
변환 함수는 데이터 타입을 변환할 수 있는 함수들입니다. TO_CHAR는 숫자, 날짜 및 시간등을 문자열로 변환할 수 있는 함수입니다. TO_NUMBER는 문자열을 숫자로 변환할 수 있고 TO_DATE는 문자열을 날짜 형태로 변환할 수 있습니다. CASE는 일시적으로 해당 쿼리에서만 형변환을 할 수 있습니다.
-- 변환 함수 예제입니다.
SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') -- '20230426111015'
, TO_NUMBER('2222') -- 2222
, TO_DATE('20230210', 'YYYYMMDD') -- '23/02/10'
, CAST('12345' AS NUMBER(10)) -- 12345
FROM DUAL;
숫자 함수
숫자 함수는 숫자를 다른 데이터 타입으로 변환시키거나 다양한 숫자 값을 조작할 수 있는 함수입니다. ABS는 특정 숫자의 절댓값을 나타내고 CEIL은 특정 숫자보다 크거나 가장 작은 정수를 표현하는 데 사용합니다. MOD는 특정 두 숫자의 나머지를 나타내고 POWER는 특정 숫자의 지수를 나타냅니다. TRUNC는 특정 숫자의 소수점 이하는 버리고 값을 리턴해 줍니다. ROUND는 특정 숫자의 반올림 값이며 FLOOR는 특정숫자보다 작거나 가장 큰 정수를 표현합니다.
-- 숫자함수 예제입니다.
SELECT ABS(-20) -- 20
, TRUNC(5.6672, 3) -- 5.667
, FLOOR(5.89) -- 5
, ROUND(2.334, 2) -- 2.34
, POWER(5, 3) -- 125
, MOD(9, 2) -- 1
, CEIL(5.16) -- 6
FROM DUAL;
지금까지 오라클의 내부함수에 대해 알아봤습니다. 다음 포스팅에서 더 좋은 정보로 찾아뵐게요.
'IT정보' 카테고리의 다른 글
오라클 데이터 정규화 (0) | 2023.04.29 |
---|---|
오라클 조인 서브쿼리 (0) | 2023.04.28 |
오라클 GROUP BY, HAVING, 그룹함수 (0) | 2023.04.26 |
ORACLE DATA insert/update/delete (0) | 2023.04.25 |
오라클 시퀀스(Sequence) 생성, 삭제, 값변경 (0) | 2023.04.24 |
댓글