SQL 함수
SQL 함수
SQL함수의 종류
단일행 함수 / 다중행 함수 : 처리하는 입력행의 수에 따라서 분류(반환값은 하나로 동일)
단일행 함수의 기능
- 데이터 항목을 조작: 실제값의 조작이 아닌 보여지는 것만 처리, 저장값의 변화는 없음
- 행당 하나의 결과 반환
- 중첩가능
- 데이터 유형 수정
- 종류: 입력값에 따라 문자, 숫자, 날짜, 일반(값에 무관), 변환(데이터 유형을 바꿈)으로 나누어진다.
문자함수
받아오는 값이 문자를 받아서 연산 처리하는 함수
종류
- 대소문자 조작 함수 : LOWER, UPPER, INICAP
- 문자조작 함수 : CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, TRIM, REPLACE
대소문자 조작함수
UPPER()
모든 문자를 대문자로 변환해주는 함수
SELECT UPPER(last_name) FROM employees;
LOWER()
모든 문자를 소문자로 변환해주는 함수
SELECT last_name
FROM employees
WHERE LOWER(last_name) = 'higgins'
/
INICAP()
첫문자는 대문자로, 나머지는 소문자로 변환해주는 함수
SELECT last_name
FROM employees
WHERE last_name = INICAP('higgins')
/
문자 조작함수
LENGTH()
들어온 문자열의 길이를 숫자값으로 표시
SELECT LENGTH('오라클') FROM dual;
INSTR()
들어온 문자열에서 두번째 인자를 찾아서 그 위치를 숫자값으로 반환한다.
인자값을 네 개를 넣을 수도 있는데 그 경우 세번째 값은 검색을 시작할 문자열의 위치를 정해주는 것이고 네번째는 찾으려는 값을 계속 찾아서 그 값의 번째값을 찾아주는 것이다.
SELECT INSTR('Hellow', 'w') FROM dual; => 6이 반환
SELECT INSTR('Hellow', 'l', 2, 2) FROM dual; => 4가 반환
숫자 함수
날짜 관련 함수
오라클에서 날짜는 7개의 단위로 저장된다(세기, 년, 월, 일, 시, 분, 초)
SYSDATE
현재 날짜와 시간을 반환하는 함수
SELECT SYSDATE FROM dual;
MONTHS_BETWEEN()
두 날짜의 간격을 달수를 기준으로 출력
SELECT MONTHS_BETWEEN(SYSDATE, '2004-7-7') FROM dual; ==> 35.9808225
ADD_MONTHS()
해당 날짜에서 달수만큼 더해서 출력
SELECT ADD_MONTHS('2004-7-7', 5) FROM dual; ==> 2004/12/07 00:00:00
NEXT_DAY()
해당 날짜 다음에 처음으로 오는 지정된 요일의 날짜를 반환
SELECT NEXT_DAY('2004-7-7', '토요일') FROM dualㅣ ==> 2004/07/10 00:00:00
LAST_DAY()
해당 날짜의 달의 마지막 날짜를 반환
SELECT LAST_DAY('2004-7-7') FROM dual ==> 2004/07/31 00:00:00
ROUND / TRUNC
ROUND와 TRUNC함수는 날짜에서도 기준에 따라서 반올림, 버림을 실행한다. 단 날짜와 함께 'MONTH', 'YEAR'등을 인자값으로 넘겨야 한다.