내장함수
문자관련 함수
● UPPER, LOWER, INITCAP(문자열) : 문자를 대,소문자로 변환
● LENGTH(문자열) : 문자길이 출력
LENGTHB(문자열) : 문자바이트수 출력
● CONCAT(문자열1, 문자열2) : 문자열 조합 (|| 연산자와 같음)
● SUBSTR(문자열, 시작위치, 길이)
- 시작위치가 음수일 때 진행방향은 바뀌지 않고 오른쪽
ex) SUBSTR(JOB, 2, 3) : 2번째 글자부터, 3글자 출력 -> 2, 3, 4번째 글자 출력 (오라클은 1부터 시작)
SUBSTR(JOB, -3, 3) : 뒤에서부터 3번째 글자부터, 3글자 출력 -> -3, -2, -1번째 글자 출력 (마지막 글자위치 : -1)
● INSTR(문자열, 찾는문자, 시작위치[선택, d:1], 시작위치로부터 찾는 문자가 몇번째인지[선택, d:1])
- 시작위치가 음수일 때 진행방향은 바뀌어 왼쪽
ex) INSTR(‘A*B*C*’, ‘*’, 2, 3) : 2번째 글자부터 시작해 3번째 * 자리수출력 = 6
INSTR(‘A*B*C*’, ‘*’,-3, 2) : 뒤에서부터 3번째 글자부터 시작해 2번째 * 자리수출력 = 2
● REPLACE(문자열, 대체될문자, 대체할문자[선택, d:공백])
● LPAD(문자열, 자릿수, 빈공간 채울문자[선택, d:공백])
RPAD(문자열, 자릿수, 빈공간 채울문자[선택, d:공백])
● LTRIM(문자열, 삭제할문자[선택])
RTRIM(문자열, 삭제할문자[선택])
숫자관련 함수
● ROUND(숫자, 반올림위치[선택, d:0]) : 반올림
● TRUNC(숫자, 버림위치[선택, d:0]) : 버림
ex) 1234.5678
-2 | -1 | 0 | 1 | 2 |
자연수 2자리 | 자연수 1자리 | 소수점 1자리 | 소수점 2자리 | 소수점 3자리 |
1200 | 1230 | 1235 | 1234.6 | 1234.57 |
● CEIL : 수직선상에서 큰 정수
● FLOOR : 수직선상에서 작은 변수
● MOD : 나머지
● POWER(2, 4) : 2^4
날짜관련 함수
● SYSDATE : 현재 시간 표시
ALTER SESSION SET NLS_DATE_FORMAT = ‘YYYY-MM-DD’; -> 날짜 포맷 바꾸기
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD:HH24:MI:SS';
- 날짜 + 1 ☞ +1일, 날짜 - 1 ☞ -1일
- ADD_MONTHS(날짜, 1) ☞ +1달
- 날짜 - 날짜 ☞ 일수 차이
- 날짜 + 날짜 ☞ X(불가능)
- MONTHS_BETWEEN(날짜, 날짜) ☞ 달수 차이
● NEXT_DAY(날짜, 요일) : 다가오는 요일날짜 출력
● LAST_DAY(날짜) : 날짜의 마지막날 출력
● ROUND(날짜, 년/월/일) ● TRUNC(날짜, 년/월/일)
캐스팅
숫자 ↔ 문자 ↔ 날짜 (문자를 기준으로 캐스팅됨)
● TO_CHAR(날짜 or 숫자, 날짜 or 숫자포맷) : 날짜 or 숫자 -> 문자
-- 날짜 -> 문자 TO_CHAR(날짜, 날짜포맷)
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD:HH24:MI:SS')
FROM dual;
-- 숫자 -> 문자 TO_CHAR(숫자, 숫자포맷)
SELECT TO_CHAR(pay*12, '9,999')
FROM professor
● TO_NUMBER(문자, 숫자포맷) : 문자-> 숫자
SELECT TO_NUMBER('23,444', '99,999')
FROM dual;
● TO_DATE(문자, 날짜포맷) : 문자 -> 날짜
SELECT TO_DATE('2012/01/01', 'YYYY-MM-DD')
FROM dual;
NULL 관련 함수
● NVL(컬럼, 치환값) : 컬럼값이 NULL이 아니면 본래값, NULL이면 치환값을 대신 출력 (본래값 타입 = 치환값 타입)
● NVL2(컬럼, 치환값1, 치환값2) : 컬럼값이 NULL이 아니면 치환값1, NULL이면 치환값2를 대신 출력
(치환값1 타입 = 치환값2 타입)
NVL(sal, 0) -- sal이 있으면 sal값 없으면 0 출력
NVL2(sal, 'O', 'X') -- sal이 있으면 'O' 없으면 'X' 출력
◎ case에 따른 함수
● CASE 칼럼 WHEN A THEN B WHEN A2 THEN B2 ELSE C END
SELECT name, deptno,
CASE deptno
WHEN 101 THEN '컴공'
WHEN 102 THEN '경영'
ELSE 0
END AS 별명
FROM professor;
SELECT name, deptno,
CASE
WHEN deptno = 101 THEN '컴공'
WHEN deptno = 102 THEN '경영'
ELSE 0
END AS 별명
FROM professor;
● DECODE(컬럼, A, B, A2, B2, …, C[선택, d:NULL]) : 컬럼값이 A이면 B출력 A2이면 B출력, 모두 아니면(else) C출력
SELECT name, deptno,
DECODE(deptno,
101, '컴공',
102, '경영',
0) AS 별명
FROM professor;