DataBase
6-1. 오라클 함수
함수란
함수(function)는 수학에서 정의한 개념으로 x와 y 변수가 존재하고 x값이 변하면 그 변화에 따라 어떤 연산 또는 가공을 거쳐 y값도 함께 변할 때 이 y를 함수라고 합니다. x값의 변화에 따라 y값이 종속적으로 변하기 때문에 '따름수'라고도 합니다.
오라클을 비롯한 여러 IT관련 기술에서도 함수를 사용합니다. 오라클에서 사용할 수 있는 함수 역시 수학과 크게 다르지 않습니다. 오라클 함수에서는 특정 결과 데이터를 얻기 위해 어떤 값이나 데이터를 입력하는데 그 값에 따라 가공 또는 연산의 과정을 거쳐 결과 값이 나옵니다. 즉, 오라클 함수는 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 며령어를 의미합니다.
오라클 함수의 종류
오라클 함수는 함수를 제작한 주체를 기준으로 오라클에서 기본으로 제공하고 있는 내장 함수(built-in function)와
사용자가 필요에 의해 직접 정의한 사용자 정의 함수(user-defined function)로 나뉩니다.
내장 함수를 뜨거운 물만 부어 바로 먹을 수 있는 컵라면으로 비유한다면 사용자 정의 함수는 약간의 레시를 활용하여 직접 만들어 먹는 파스타라고 비유할 수 있습니다. 내장 함수는 이미 모두 만들어 있는 상태이므로 원하는 기능을 간편하게 바로 사용할 수 있습니다. 하지만 사용자 정의 함수는 구성 요소의 선별과 제작에 시간이 필요하기 때문에 바로 사용할 수 없지만 입맛에 맞는 적절한 기능을 직접 구현해서 사용할 수 있습니다.
내장 함수의 종류
내장 함수는 입력 방식에 따라 데이터 처리에 사용하는 행이 나뉩니다. 데이터가 한 행씩 입력되고 입력된 한 행당 결과가 하나씩 나오는 함수를 단일행 함수(single-row function)라고 합니다. 반면에 여러 행이 입력되어 하나의 행으로 결과가 반환되는 함수를 다중행 함수(multiple-row function)라고 합니다. 단일행 함수와 다중행 함수는 자료형에 따라 조금 더 세분화 됩니다.
6-2. 문자 데이터를 가공하는 문자 함수
문자 함수는 문자 데이터를 가공하거나 문제 데이터로부터 특정 결과를 얻고자 할 때 사용하는 함수입니다.
대/소문자를 바꿔주는 UPPER, LOWER, INITCAP 함수
함수 | 설명 |
UPPER(문자열) | 괄호 안 문자 데이터를 모두 대문자로 변환하여 반환 |
LOWER(문자열) | 괄호 안 문자 데이터를 모두 소문자로 변환하여 반환 |
INITCAP(문자열) | 괄호 안 문자 데이터 중 첫 글자는 대문자로, 나머지 문자를 소문자로 변환 후 반환 |
UPPER, LOWER, INITCAP 함수를 사용하려면 입력 데이터에 열 이름이나 데이터를 직접 지정해야 합니다.
대/소문자를 바꿔 주는 함수는 기능이 비교적 간단합니다.
예를 들어 게시판의 글 제목이나 글 본문과 같이 가변 길이 문자열 데이터에서 특정 문자열을 포함하는 데이터를 조회하는 경우를 생각하면 제목이나 본문에 'Oracle' 문자열이 포함된 데이터를 검색하는 기능을 구현할 때 다음과 같이 LIKE 연산자를 와일트 카드와 함께 사용할 수 있습니다.
SELECT *
FROM 게시판테이블
WHERE 게시판 제목 열 LIKE '%Oracle%'
OR 게시판 본문 열 LIKE '%Oracle%'
LIKE 연산자를 사용하여 문자열 데이터의 패턴을 %Oracle%로 지정하였기 때문에 'Oracle' 문자열이 포함된 데이터가 모두 출력됩니다. 하지만 이 조건식에서 사용하는 문자열 데이터 패턴은 ORACLE, oracle, OrAcLe과 같이 대/소문자가 다른 여러 가지 경우의 'Oracle' 단어를 찾아내지 못합니다.
이때 조건식 양쪽 항목의 문자열 데이터를 모두 대문자나 소문자로 바꿔서 비교한다면 실제 검색어의 대/소문자 여부와 상관없이 건색 단어와 일치한 문자열을 포함한 데이터를 찾을 수 있습니다.
-- 사원 이름이 SCOTT인 데이터 찾기
SELECT * FROM EMP
WHERE UPPER(ENAME) = UPEER('scott');
-- 사원이름에 SCOTT단어를 포함한 데이터 찾기
SELECT * FROM EMP
WHERE UPPER(ENAME) LIKE UPPER('%scott%');
찾으려는 문자열을 scott으로 명시했지만 양쪽 항목을 모두 UPPER 함수를 통해 대문자로 변환한 후 비교하기 때문에
대/소문자 상관 없이 SCOTT 데이터가 출력되는 것을 확인할 수 있습니다.
문자열 길이를 구하는 LENGTH 함수
특정 문자열의 길이를 구할 때 LENGTH 함수를 사용합니다.
SELECT ENAME, LENGTH(ENAME)
FROM EMP;
LENGTH함수를 사용하면 문자열이 몇 글자인지 출력합니다.
LENGTH함수를 WHERE절에 사용하면 문자열 길이를 비교하여 행을 선별하는 것도 가능합니다.
LENGTH는 숫자 비교도 가능합니다.
LENGTH 함수와 LENGTHB 함수 비교하기
LENGTH 함수와 사용 방식은 같지만 문자열 데이터 길이가 아닌 바이트 수를 반환하는 LENGTHB 함수도 존재합니다.
LENGTH 함수는 문자열 길이를 반환하기 때문에 LENGTH('한글')은 2, LENGTHB 함수는 문자열의 바이트 수를 반환하기 때문에 LENGTHB('한글')은 4로 결과가 출력되는 것을 확인할 수 있습니다.
한글은 한 문자당 2byte로 처리됩니다.
문자열 일부를 추출하는 SUBSTR 함수
주민등록번호 중 생년월일 앞자리만 필요하거나 전화번호의 마지막 네자리 숫자만 추출하는 경우와 같이 문자열 중
일부를 추출할 때 SUBSTR 함수를 사용합니다. 다음 표는 SUBSTR함수를 사용하는 방법입니다.
함수 | 설명 |
SUBSTR(문자열 데이터, 시작 위치, 추출 길이) | 문자열 데이터의 시작 위치부터 추출 길이만큼 추출합니다. 시작 위치가 음수일 경우에는 마지막 위치부터 거슬러 올라간 위치에서 시작합니다. |
SUBSTR(문자열 데이터, 시작 위치) | 문자열 데이터의 시작 위치부터 문자열 데이터 끝까지 추출합니다. 시작 위치가 음수일 경우에는 마지막 위치부터 거슬러 올라간 위치에서 끝까지 추출합니다. |
SELECT JOB, SUBSTR(JOB,1,2),SUBSTR(JOB,3,2),SUBSTR(JOB,5)
FROM EMP;
SUBSTR 함수의 입력 데이터가(JOB, 1, 2)인 경우는 JOB열 데이터의 첫 글자부터 두 자리가 추출되고
(JOB, 3, 2)인 경우는 세 번째 글자부터 두 글자, (JOB, 5)의 경우 다섯 번째 글자부터 끝까지 출력됩니다.
다른 함수의 결과 값을 SUBSTR 함수의 입력 값으로 사용할 수도 있습니다. SUBSTR 함수 안에 LENGTH함수를 사용하는 경우도 있습니다.
SELECT JOB,
SUBSTR(JOB, -LENGTH(JOB)),
SUBSTR(JOB, -LENGTH(JOB),2);
SUBSTR(JOB, -3)
FROM EMP;
SUBSTR(JOB, -LENGTH(JOB))인 경우 -LENGTH자리부터 끝까지 출력되고
SUBSTR(JOB, -LENGTH(JOB),2)인 경우 -LENGTH자리부터 두 글자 출력
SUBSTR(JOB, -3)인 경우 -3자리부터 끝까지 출력됩니다.
문자열 데이터 안에서 특정 문자 위치를 찾는 INSTR 함수
문자열 데이터 안에 특정 문자나 문자열이 어디에 포함되어 있는지를 알고자 할 때 INSTR 함수를 사용합니다.
INSTR 함수는 총 네 개의 입력 값을 지정할 수 있으며 최소 두 개의 입력값, 즉 원본 문자열 데이터와 원본 문자열 데이터에서 찾으려는 문자 이렇게 두 가지는 반드시 지정해 주어야 합니다.
INSTR([대성 문자열 데이터(필수)],
[위치를 찾으려는 부분 문자(필수)],
[위치를 찾기를 시작할 대상 문자열 데이터 위치(선택, 기본값은 1)],
[시작 위치에서 찾으려는 문자가 몇 번째인지 지정(선택, 기본값은 1)])
출력값은 해당 번째를 나타냄
INSTR 함수의 세 번째 입력 데이터, 즉 위치 찾기를 시작하는 위치 값에 음수를 쓸 때 원본 문자열 데이터의 오른쪽 끝부터 왼쪽 방향으로 검색합니다. 만약 찾으려는 문자가 문자열 데이터에 포함되어 있지 않다면 위치 값이 없으므로 0을 반환합니다.
특정 문자를 다른 문자로 바꾸는 REPLACE 함수
REPLACE 함수는 특정 문자열 데이터에 포함된 문자를 다른 문자로 대체할 경우에 유용한 함수 입니다.
REPLACE([문자열 데이터 또는 열 이름(필수)],[찾는 문자열(필수)],[대체할 문자(선택)]
만약 대체할 문자를 입력하지 않는다면 찾는 문자로 지정한 문자는 문자열 데이터에서 삭제됩니다.
데이터의 빈 공간을 특정 문자로 채우는 LPAD, RPAD 함수
LPAD와 RPAD는 각각 Left Padding(왼쪽 패딩), Right Padding(오른쪽 패딩)을 뜻합니다. 데이터와 자릿수를 지정한 후
데이터 길이가 지정한 자릿수보다 작을 경우 나무지 공간을 특정 문자로 채우는 함수입니다. LPAD는 남은 빈 공간을 왼쪽에 채우고 RPAD는 오른쪽에 채웁니다. 만약 빈 공간에 채울 문자를 지정하지 않으면 LPAD와 RPAD 함수는 빈 공간의
자릿수만큼 공백 문자로 띄웁니다.
LPAD([문자열 데이터 또는 열이름(필수)],[데이터 자릿수(필수)],[빈 공간에 채울 문자(선택)])
RPAD([문자열 데이터 또는 열이름(필수)],[데이터 자릿수(필수)],[빈 공간에 채울 문자(선택)])
이러한 문자열 데이터의 특징 문자로의 채움, 즉 패딩 처리 데이터의 일부만 노출해야 하는 개인정보를 출력할 때 사용합니다.(010-****-****)
두 문자열 데이터를 합치는 CONCAT 함수
CONCAT 함수는 두 개의 문자열 데이터를 하나의 데이터로 연결해 주는 역할을 합니다. 두 개의 입력 데이터 지정을 하고
열이나 문자열 데이터 모두 지정할 수 있습니다.
CONCAT을 사용한 결과 값은 다시 다른 CONCAT함수의 입력 값으로 사용하는 것도 가능합니다.
특정 문자를 지우는 TRIM, LTRIM, RTRIM 함수
TRIM, LTRIM, RTRIM 함수는 문자열 데이터 내에서 특정 문자를 지우기 위해 사용하는 데, 원본 문자열데이터를 제외한 나머지 데이터는 모두 생략할 수 있습니다. 삭제할 문자가 생략될 경우에 기본적으로 공백을 제거합니다. 그리고 삭제
옵션은 왼쪽에 있는 글자를 지우는 LEADING, 오른쪽에 있는 글자를 지우는 TRAILINNG, 양쪽의 글자를 모두 지우는
BOTH를 사용합니다.
TRIM([삭제 옵션(선택)] [삭제할 문자(선택)] FROM [원본 문자열 데이터(필수)])
TRIM 함수의 삭제할 문자는 필수가 아니므로 지정하지 않아도 됩니다.
LTRIM, RTRIM 함수는 각각 왼쪽, 오른쪽의 지정 문자를 삭제하는 데 사용합니다. TRIM과 마찬가지로 삭제할 문자를 지정하지 않을 경우 공백 문자가 삭제 됩니다. TRIM 함수와 다른 점은 삭제할 문자를 하나만 지정하는 것이 아니라 여러 문자 지정이 가능하는 것입니다.
LTRIM([원본 문자열 데이터(필수)], [삭제할 문자 집합(선택)])
원본 문자열의 왼쪽에서 삭제할 문자열을 지정합니다.
RTRIM([원본 문자열 데이터(필수)], [삭제할 문자 집합(선택)])
원본 문자열의 오른쪽에서 삭제할 문자열을 지정합니다.
삭제할 문자를 지정하지 않을 경우 각각 함수 종류(TRIM, LTRIM,RTRIM)에 따라 양쪽, 왼쪽, 오른쪽 공백이 제거됩니다.
LTRIM, RTRIM을 사용한 쿼리에서 삭제 대상이 문자일 경우 해당 문자의 순서와 반복을 통해 만들어 낼 수 있는 모든 조합이 각각 왼쪽, 오른쪽부터 삭제되어 갑니다.
TRIM 함수는 검색 기준이 되는 데이터에 혹시나 들어 있을지도 모르는 양쪽 끝의 공백을 제거할 때 많이 사용합니다.
6-3. 숫자 데이터를 연산하고 수치를 조정하는 숫자 함수
함수 | 설명 |
ROUND | 지정된 숫자의 특정 위치에서 반올림한 값을 반환 |
TRUNC | 지정된 숫자의 특정 위치에서 버림한 값을 반환 |
CEIL | 지정된 숫자보다 큰 정수 중 가장 작은 정수를 반환 |
FLOOR | 지정된 숫자보다 작은 정수 중 가장 큰 정수를 반환 |
MOD | 지정된 숫자를 나눈 나머지 값을 반환 |
특정 위치에서 반올림하는 ROUND 함수
ROUND 함수는 TRUNC 함수와 함께 가장 많이 사용하는 숫자 함수 중 하나입니다. 특정 숫자를 반올림하되 반올림할 위치를 지정할 수 있습니다. 반올림할 위치를 지정하지 않으면 소수점 첫째 자리에서 반올리함 결과가 반환됩니다.
ROUND([숫자(필수)],[반올림 위치(선택)])
반올림 위치를 지정하지 않은 반환값은 반올림 위치를 0으로 지정한 것과 같은 결과가 출력됩니다. 반올림 위치 값이 0에서 양수로 올라가면 반올림 위치가 한 자리씩 더 낮은 소수점 자리를 향하게 되고, 0에서 음수로 내려가면 쪽으로 한 자리씩 위로 반올림하게 됩니다. 보통 소수점 첫째자리에서 반올림하는 것이 일반적이지만 위치 값에 따른 반올림 기준 위치를 지정할 수도 있습니다.
특정 위치에서 버리는 TRUNC 함수
TRUNC 함수는 지정된 자리에서 숫자를 버림 처리하는 함수입니다. ROUND 함수와 마찬가지 방식으로 버림 처리할 자릿수 지정이 가능합니다. TRUNC 함수 역시 반올림 위치를 지정하지 않으면 소수점 첫째자리에서 버림 처리됩니다.
TRUNC([숫자(필수)],[버림 위치(선택)]
지정한 숫자와 가까운 정수를 찾는 CEIL, FLOOR 함수
CEIL 함수와 FLOOR 함수는 각각 입력된 숫자와 가까운 큰 정수, 작은 정수를 반환하는 함수입니다.
CEIL([숫자(필수)])
FLOOR([숫자(필수)])
숫자를 나눈 나머지 값을 구하는 MOD함수
숫자 데이터를 다루다 보면 간혹 숫자 데이터를 특정 숫자로 나눈 나머지를 구해야하는 경우가 있습니다.
MOD([나누셈 될 숫자(필수)], [나눌 숫자(필수)]),
6-4. 날짜 데이터를 다루는 날짜 함수
오라클은 날짜 데이터를 다루는 함수도 다양하게 제공하고 날짜 데이터 즉, DATE형 데이터는 다음과 같이 간단한 연산이 가능합니다. (날짜 데이터끼리의 더하기는 연산이 되지 않습니다.)
연산 | 설명 |
날짜 데이터 + 숫자 | 날짜 데이터보다 숫자만큼 일수 이후 날짜 |
날짜 데이터 - 숫자 | 날짜 데이터보다 숫자만큼 일수 이전의 날짜 |
날짜 데이터 - 날짜 데이터 | 두 날짜 데이터 간의 일수 차이 |
날짜 데이터 + 날짜 데이터 | 연산 불가, 지원하지 않음 |
오라클에서 제공하는 날짜 함수 중 가장 대표 함수는 SYSDATE 함수입니다. SYSDATE 함수는 별다른 입력 데이터 없이
오라클 데이터베이스 서버가 놓인 OS의 현재 날짜와 시간을 보여줍니다.
몇 개월 이후 날짜를 구하는 ADD_MONTH 함수
ADD_MONTH 함수는 특정 날짜에 지정한 개월 수 이후 날짜 데이터를 반환하는 함수입니다.
ADD_MONTH([날짜 데이터(필수)],[더할 개월 수(정수)(필수)])
ADD_MONTH 함수는 은근히 자주 사용됩니다. 왜냐하면 윤년 등의 이유로 복잡해질 수 있는 날짜 계산을 간단하게 만들어 주기 때문입니다. (WHERE절에 사용가능)
두 날짜 간의 개월 수 차이를 구하는 MONTHS_BETWEEN 함수
MONTHS_BETWEEN 함수는 두 개의 날짜 데이터를 입력하고 두 날짜 간의 개월 수 차이를 구하는 데 사용합니다.
MONTHS_BETWEEN([날짜 데이터1(필수)],[날짜 데이터2(필수)])
돌아오는 요일, 달의 마지막 날짜를 구하는 NEXT_DAY, LAST_DAY 함수
NEXT_DAY 함수는 날짜 데이터와 요일 문자열을 입력합니다. 입력한 날짜 데이터에서 돌아오는 요일의 날짜를 반환합니다.
NEXT_DAY([날짜 데이터(필수)], [요일 문자(필수)]
LAST_DAY 함수는 하나의 날짜 데이터만들 입력 데이터로 사용하며 해당 날짜가 속한 달의 마지막 날짜를 반환해 주는 함수 입니다.
LAST_DAY([날짜 데이터(필수)])
날짜의 반올림, 버림을 하는 ROUND, TRUNC 함수
숫자 데이터의 반올림, 버림 처리에 사용한 ROUND, TRUNC 함수는 날짜 데이터를 입력 데이터로 사용할 수도 있습니다.
이때 소수점 위치 정보를 입력하지 않고 반올림, 버림의 기준이 될 포맷(FORMAT)값을 지정합니다.
입력 데이터 종류 | 사용 방식 |
숫자 데이터 | ROUND([숫자(필수)],[반올림 위치]) |
TRUNC([숫자(필수)],[버림 위치]) | |
날짜 데이터 | ROUND([날짜데이터(필수)],[반올림 포맷]) |
TRUNC([날짜데이터(필수)],[버림 기준 포맷]) |
오라클에서 날짜 데이터를 사용할 때 기준 포맷 값은 다음과 같습니다.
포맷 모델 | 기준 단위 |
CC, SCC | 네 자리 연도의 끝 두 자리를 기준으로 사용 (2016년이면 2050 이하이므로, 반올림할 경우 2001년으로 처리) |
SYYY, YYY, YEAR, SYEAR, YYY, YY, Y | 날짜 데이터의 해당 연/월/일의 7월 1일을 기준 (2016년 7월 1일 일 경우, 2017년으로 처리) |
IYYY, IYY, IY, I | ISO 8601에서 제정한 날짜 기준년도 포맷을 기준 |
Q | 각 분기의 두 번째 달의 16일 기준 |
MONTH, MON, MM, RM | 각 달의 16일 기준 |
WW | 해당 연도의 몇 주(1~53주)를 기준 |
IW | ISO 8601에서 제정한 날짜 기준 해당 연도의 주(WEEK)를 기준 |
W | 해당 월의 주(1~5번째 주)를 기준 |
DDD, DD ,J | 해당 일의 정오(12:00:00)를 기준 |
DAY, DY, D | 한 주가 시작되는 날짜 기준 |
HH, HH12, HH24 | 해당일의 시간을 기준 |
MI | 해당일 시간의 분을 기준 |
6-5. 자료형을 변환하는 형 변환 함수
오라클에서는 지정할 데이터의 종류, 즉 자료형을 다양하게 제공합니다. 이렇게 지정된 자료형을 필요에 따라 바꿔 주어야할 때가 있습니다. 각 데이터에 지정된 자료형을 바꿔 주는 함수를 형 변환 함수라고 합니다.
오라클에서는 자료형이 자동으로 변환되는 방식이 아닌 사용자가 자료형을 직접 지정해 주는 방식인 명시적 형 변환을 해줘야합니다.
날짜, 숫자 데이터를 문자 데이터로 변환하는 TO_CHAR 함수
TO_CHAR 함수는 날짜, 숫자 데이터를 문자 데이터로 변환해 주는 함수입니다. 주로 날짜 데이터에서 문자 데이터로
변환하는 데 많이 사요하며 다음과 같이 작성할 수 있습니다.
TO_CHAR([날짜데이터(필수)], '[출력되기 원하는 문자 형태(필수)]')
날짜 포맷 형식
형식 | 설명 |
CC | 세기 |
YYYY, RRRR | 연(4자리 숫자) |
YY, RR | 연(2자리 숫자) |
MM | 월(2자리 숫자) |
MON | 월(언어별 월 이름 약자) |
MONTH | 월(언어별 월 이름 전체) |
DD | 일(2자리 숫자) |
DDD | 1년 중 며칠(1~366) |
DY | 요일(언어별 요일 이름 약자) |
DAY | 요일(언어별 요일 이름 전체) |
W | 1년 중 몇 번째 주(1~53) |
월과 요일의 표시는 사용 언어에 따라 출력을 달리할 수 있습니다. 기본적으로는 현재 사용하고 있는 언어에 맞게 출력됩니다.
TO_CHAR([날짜 데이터(필수)], '[출력되길 원하는 문자 형태(필수)]',
'NLS_DATE_LANGUAGE = LANGUAGE'(선택))
시간 출력 형식
형식 | 설명 |
HH24 | 24시간으로 표현한 시간 |
HH, HH12 | 12시간으로 표현한 시간 |
MI | 분 |
SS | 초 |
AM, PM, A.M, P.M | 오전, 오후 표시 |
숫자 데이터로 출력할 때 지정할 수 있는 형식
형식 | 설명 |
9 | 숫자의 한 자리를 의미함(빈 자리를 채우지 않음) |
0 | 빈 자리를 0으로 채움을 의미함 |
$ | 달러($) 표시를 붙여서 출력함 |
L | L(Locale) 지역 화폐 단위 기호를 붙여서 출력함 |
. | 소수점을 표시함 |
, | 천 단위의 구분 기호를 표시함 |
문자 데이터를 숫자 데이터로 변환하는 TO_NUMBER 함수
TO_NUMBER('[문자열 데이터(필수)]', '[인식될 숫자형태(필수)]')
문자 데이터를 날짜 데이터로 변환하는 TO_DATE 함수
TO_DATE('[문자열 데이터(필수)]','[인식될 날짜형태(필수)]')
6-6 NULL 처리 함수
NVL 함수의 기본 사용법
NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)],
[앞의 데이터가 NULL일 경우 반환할 데이터(필수)])
NVL2 함수의 기본 사용법
NVL2([NULL인지 여부를 검사할 데이터 또는 열(필수)],
[앞 데이터가 NULL이 아닐 경우 반환할 데이터 또는 계산식(필수)],
[앞 데이터가 NULL일 경우 반환할 데이터 또는 계산식(필수)])
6-7. 상황에 따라 다른 데이터를 반환하는 DECODE 함수와 CASE문
DECODE 함수
DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과],
[조건1], [데이터가 조건1과 일치할 때 반환할 결과],
[조건2], [데이터가 조건2와 일치할 때 반환할 결과],
...
[조건N], [데이터가 조건N과 일치할 때 반환할 결과],
[위 조건1 ~ 조건N과 일치한 경우가 없을 때 반환할 결과])
CASE문
CASE문은 DECODE 함수와 마찬가지로 특정 조건에 따라 반환할 데이터를 설정할 때 사용합니다. 기준 데이터를 반드시 명시하고 그 값에 따라 반환 데이터를 정하는 DECODE함수와 달리 CASE문은 각 조건에 사용하는 데이터가 서로 상관없어도 됩니다. 또 기준 데이터 값이 같은 데이터 외에 다양한 조건을 사용할 수 있습니다.
CASE문의 기본 형식은 다음과 같습니다. 작성 형식 면에서 볼 때 WHEN이나 THEN ELES를 사용하는 CASE문은 DECODE 함수보다 더 프로그래밍 언어적인 표현 방식을 사용합니다.
CASE [검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과(선택)]
WHEN[조건1] THEN [조건1의 결과 값이 TRUE일 때, 반환할 결과]
WHEN[조건2] THEN [조건2의 결과 값이 TRUE일 때, 반환할 결과]
...
WHEN[조건N] THEN [조건N의 결과 값이 TRUE일 때, 반환할 결과]
ELES[위 조건1 ~ 조건N과 일치하는 경우가 없을 때 반환할 결과]
END
'javaboiii의 DataBase > DB 요약정리(Do it! 오라클 데이터베이스)' 카테고리의 다른 글
DB -12) 데이터 정의어 (0) | 2024.07.31 |
---|---|
DB -10) 데이터를 추가, 수정, 삭제하는 데이터 조작어 (0) | 2024.07.30 |
DB -5) WHERE절과 연산자 (0) | 2024.07.28 |
DB - 4) SELECT문의 기본 형식 (0) | 2024.07.27 |
DB -2) 관계형 데이터베이스와 오라클 데이터베이스 (0) | 2024.07.27 |