단일행 함수
1. 문자 함수
INITCAP(문자열 or 컬럼명) |
입력값의 첫 글자만 대문자로 변환 EX) INITCAP('abcd') --> Abcd |
|
LOWER(문자열 or 컬럼명) |
입력값을 전부 소문자로 변환 EX) LOWER('ABCD') --> abcd |
|
UPPER(문자열 or 컬럼명) |
입력값을 전부 소문자로 변환 EX) UPPER('abcd') --> ABCD |
|
LENGTH(문자열 or 컬럼명) |
입력된 문자열의 길이 값을 출력 EX) LENGTH('한글') --> 2 |
|
LENGTHB(문자열 or 컬럼명) |
입력된 문자열의 길이의 바이트 값을 출력 EX) LENGTHB('한글') --> 4 |
|
CONCAT(문자열1, 문자열2) |
두 문자열을 결합해서 출력, || 연산자와 동일 EX) CONCAT('A','B') -->AB |
|
SUBSTR (문자열, 시작위치, 자릿수) |
주어진 문자에서 특정 문자만 추출 ( =서브스트링, 서브스터, 서브스트) cf. SUBSTRING EX) SUBSTR('ABC',1,2) --> AB EX) SUBSTR('ABC', -1, 2) --> BC |
|
SUBSTRB (문자열, 시작위치, 자릿수) |
주어진 문자에서 특정 바이트만 추출 EX) SUBSTRB('한글',1,2) --> 한 |
|
INSTR (문자열, 찾는글자, 시작위치, 몇번째) |
주어진 문자에서 특정문자의 위치 추출 EX) INSTR('ABCD','D') --> 4 |
|
INSTRB |
주어진 문자에서 특정문자의 위치 바이트값 추출 EX) INSTRB('한글로', '로') --> 5 |
|
LPAD (문자열, 자리수, '채울문자') |
주어진 문자열에서 왼쪽으로 특정문자를 채움 EX) LPAD('love', '6', '*') --> **love |
|
RPAD (문자열, 자리수, '채울문자') |
주어진 문자열에서 오른쪽으로 특정문자를 채움 EX) RPAD('love', '6', '*') --> love** |
|
LTRIM (문자열, '제거할문자') |
주어진 문자열에서 왼쪽의 특정문자를 삭제함 EX) LTRIM('*love', '*') --> love |
|
RTRIM (문자열, '제거할문자') |
주어진 문자열에서 오른쪽의 특정문자를 삭제함 EX) RTRIM('love*', '*') --> love |
|
REPLACE ('문자열', '문자1', '문자2') |
주어진 문자열에서 A를 B로 치환함 EX) REPLACE('AB', 'A', 'E') --> EB |
|
REGEXP_REPLACE |
주어진 문자열에서 특정패턴을 찾아 치환함 |
|
REGEXP_INSTR |
주어진 문자열에서 특정패턴의 시작 위치를 반환 |
|
REGEXP_SUBSTR |
주어진 문자열에서 특정패턴을 찾아 반환함 |
|
REGEXP_LIKE |
주어진 문자열에서 특정패턴을 찾아 반환함 |
|
REGEXP_COUNT |
주어진 문자열에서 특정패턴의 횟수를 반환 |
2. 숫자 함수
ROUND(숫자, 출력을원하는 자리수) |
주어진 숫자를 반올림 한 후 출력함 EX) ROUND(12.345, 2) --> 12.35 |
|
TRUNC(숫자, 출력을원하는 자리수) |
주어진 숫자를 버림 한 후 출력함 EX) TR UNC(12.345, 2) --> 12.34 |
|
MOD(숫자, 나눌수) |
주어진 숫자를 나누기 한 후 나머지 값 출력함 EX) MOD(12, 10) -->2 |
|
CEIL (숫자) |
주어진 숫자와 가장 근접한 큰 정수 출력함 EX) CEIL(12.345) -->13 |
|
FLOOR(숫자) |
주어진 숫자와 가장 근접한 작은 정수 출력함 EX) FLOOR(12.345) -->12 |
|
POWER(숫자1, 숫자2) |
주어진 숫자1의 숫자2승을 출력함 EX) POWER(3,2) --> 9 |
* ROWNUM : 줄번호 출력 EX) SELECT rownum "줄번호", name "이름" FROM emp;
3. 날짜 함수
SYSDATE() |
시스템의 현재날짜와 시간 오라클이 설치된 서버의 시간은 함부로 바꾸면 안됨 |
|
MONTHS_BETWEEN |
두 날짜 사이의 개월 수 (숫자) 큰 날짜를 먼저써야 양수로 나옴 윤달 구분 불가능 |
|
ADD_MONTHS |
주어진 날짜에 개월을 더함 |
|
NEXT_DAY |
주어진 날짜를 기준으로 돌아오는 날짜 출력 |
|
LAST_DAY |
주어진 날짜가 속한 달의 마지막 날짜 출력 |
|
ROUND |
주어진 날짜를 반올림 하루의 반에 해당되는 시간은 낮(정오) 12:00:00 |
|
TRUNC |
주어진 날짜를 버림 하루의 반에 해당되는 시간은 낮(정오) 12:00:00 |
* 날짜포맷 변경 : ALTER session SET NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS';
ALTER session SET NLS_DATE_FORMAT='YY/MM/DD';
* 리눅스 날짜 포맷 : DD-MON-YY
* 윈도우 날짜 포맷 : YYYY-MM-DD
4. 변환 함수 : 묵시적 데이터형 변환, 명시적 데이터 형 변환
CHAR(n) |
고정 길이의 문자를 저장. 최대값은 2000bytes |
VARCHAR2(n) |
가변 길이의 문자를 저장. 최대값은 4000bytes |
NUMBER(p,s) |
숫자값 저장. p는 전체자리수, 1~38자리까지 가능 s는 소수점 이하 자리수, -84~127자리까지 가능 EX) NUMBER (5, 2) --> 123.45 |
DATE |
BC 4712년 1월 1일 ~ AD 9999년 12월 31일 날짜 저장. 총 7byte로 저장 |
LONG |
가변 길이의 문자를 저장, 최대 2GB까지 저장가능 |
CLOB |
가변 길이의 문자를 저장, 최대 4GB까지 저장가능 |
BLOB |
가변 길이의 바이너리 데이터를 최대 4GB까지 저장가능 |
RAW(n) |
원시 이진 데이터. 최대 2000bytes 까지 저장 |
LONG RAW(n) |
원시 이진 데이터. 최대 2GB까지 저장가능 |
BFILE |
외부 파일에 저장된 데이터로 최대 4GB까지 저장가능 |
* 묵시적 형 변환 (자동) : 오라클이 자동으로 형 변환을 시킨다.
EX) SELECT 2 + '2'
FROM dual;
--> 결과 4
-- 2는 숫자, '2'는 문자
-- 산술연산자는 문자를 연산할수 없기에 오라클이 자동으로 문자를 숫자로 바꾼후 연산수행
* 명시적 형 변환 (수동) : 사용자가 수동으로 형 변환을 시킨다.
EX) SELECT 2 + TO_NUMBER('2')
FROM dual;
-- 속도가 느려지는 주점이 될 수 있음.
* TO_CHAR
TO_CHAR (원래날짜, '원하는포맷') : 날짜 -> 문자형 변환하기 |
||
연도 |
'YYYY' |
연도를 4자리로 표현. EX) 2014 |
'RRRR' |
2000년 이후에 Y2K 버그로 인해 등장한 날짜 표기법, 연도4자리 표기법 |
|
'YY' |
연도를 끝의 2자리만 표시. EX) 14 |
|
'RR' |
연도를 끝의 2자리만 표시. EX) 14 |
|
'YEAR' |
연도의 영문 이름 전체를 표시 |
|
월 |
'MM' |
월을 숫자 2자리로 표현 EX) 10 |
'MON' |
유닉스용 오라클에서 월을 뜻하는 영어 3글자로 표시. EX) OCT 윈도우용 오라클에서는 MONTH와 동일 |
|
'MONTH' |
월을 뜻하는 이름 전체를 표시 |
|
일 |
'DD' |
일을 숫자 2자리로 표시. EX) 26 |
'DAY' |
요일에 해당하는 명칭 표시. 유닉스용 오라클은 영문, 윈도우용 오라클에서는 한글 |
|
'DDTH' |
몇 번째 날인지 표시 |
|
시간 |
'HH24' |
하루를 24 시간으로 표시 |
'HH' |
하루를 12 시간으로 표시 |
|
'MI' |
분 |
|
'SS' |
초 |
TO_CHAR (숫자, '원하는포맷') : 숫자형 -> 문자형 변환하기 | |
9 | 9의 개수만큼 자리수 EX) to_char(1234, '99999') |
0 | 빈자리를 0으로 채움 EX) to_char(1234, '09999') |
$ | $ 표시를 붙여서 표시 EX) to_char(1234, '99999') |
. | 소수점 이하를 표시 EX) to_char(1234, '99999') |
, | 천 단위 구분기호 표시 EX) to_char(1234, '99999') |
* TO_NUMBER('문자') : 문자(숫자처럼 생긴 문자)를 숫자로 바꾸는 함수
* TO_DATE('문자') : 문자(날짜처럼 생긴 문자)를 날짜로 바꾸는 함수
5. 일반 함수
① NVL(컬럼, null일 때 치환할값)
- NULL값을 만나면 다른 값으로 치환해서 출력하는 함수
- 치환값이 문자일 경우 : EX) NVL(position, '사원') : position 값이 null일 경우 '사원'으로 치환
- 치환값이 날짜일 경우 : EX) NVL(hiredtae, '2014.05.01') : hiredate 값이 없을 경우 '2014/05/01'로 치환
② NVL2(COL1, COL2, COL3)
- COL1 값이 null이 아니면 COL2를 null이면 COL3을 출력
③ DECODE(A, B, '1', null)
- 마지막 null은 생략 가능
- A가 B이면 1을 출력하고 아니면 null을 출력
- DECODE(A, B, '1', '2') : null값이 아닌 다른 값으로 대체 가능
- DECODE(A, B, '1', C, '2', '3') : A가 B일 경우 1 출력, A가 C일 경우 2 출력, 둘다아니면 3 출력
- DECODE(A, B, DECODE( C, D, '1', null) ) : A가 B일 경우 C가 D를 만족하면 1출력, C가 D가 아닐경우 NULL
- DECODE(A, B, DECODE( C, D, '1', '2' ) ) : null값이 아닌 다른 값으로 대체 가능
- DECODE(A, B, DECODE( C, D, '1', '2' ), '3' )
④ CASE 문
- 크거나 작은 조건을 처리할 경우 (decode는 '=' 인 값을 처리하는데 사용됨)
'oracle > [SQL] SQL' 카테고리의 다른 글
6장. DDL (0) | 2014.10.02 |
---|---|
5장. JOIN (0) | 2014.10.02 |
4장. 복수행 함수 (그룹함수) (0) | 2014.10.01 |
3장. 정규식함수 (0) | 2014.09.30 |
1장. SELECT (0) | 2014.09.29 |
댓글