함수
- 하나의 큰 프로그램에서 반복적으로 사용되는 부분들을 분리하여 작성해 놓은 작은 서브 프로그램. 호출하며 값을 전달하면 결과를 리턴하는 방식으로 사용. 컬럼의 값을 읽어서 연산한 결과를 반환
- 단일행 함수 : N개의 값을 읽어서 N개의 결과 반환
- 그룹 함수 : N개의 값을 읽어 1개의 결과를 반환
- 함수는 SELECT, WHERE, ORDER BY, GROUP BY, HAVING절 사용가능
LENGTH
- 주어진 컬럼 값/문자열의 길이 반환
INSTR
- 지정한 위치부터 지정한 순번째로 검색되는 문자의 시작 위치를 반환
- 작성법 : INSTR('문자열' | 컬럼명, '찾을문자', [찾을위치 시작위치], [순번] )
--> 앞에서 3번째에 있으므로 결과값에 3을 반환한다.
SUBSTR
- 컬럼이나 문자열에서 지정한 위치부터 지정한 길이만큼 문자열을 잘라내서 반환, 잘라낼 길이 생략 시 끝까지 잘라냄
- 작성법 : SUBSTR('문자열' | 컬럼명, 잘라내기 시작할 위치, [잘라낼 길이])
--> (EMAIL의 첫번째 문자열부터 (EMAIL의 '@'가 시작하는위치)-1) 까지 잘라온다.
TRIM
- 주어진 컬럼이나 문자열의 앞, 뒤, 양쪽에 있는 지정된 문자를 제거. 보통 양쪽 공백 제거에 많이 사용
- 작성법 : TRIM ( [옵션] '문자열' | 컬럼명 [FROM '문자열' | 컬럼명] )
--> 옵션이 생략되었기 때문에 결과값은 양쪽 '-'가 제거된 KH가 나온다.
ABS
- 전달받은 숫자의 절대값 반환
--> 절대값을 반환하기 때문에 둘다 10이 나온다.
MOD
- 전달 받은 숫자를 나누어 나머지 반환
ROUND
- 전달받은 숫자 혹은 컬럼에서 지정한 위치부터 반올림하여 값 반환
--> 123, 123.5
--> 120, 100
FLOOR
- 전달 받은 숫자 혹은 컬럼에서 소수점 자리의 수를 버림 후 반환
CEIL
- 전달 받은 숫자 혹은 컬럼을 올림 후 반환
--> 124, 123
TRUNC
- 전달 받은 숫자 혹은 컬럼에서 지정한 위치부터의 자리의 수를 버리고(절삭) 반환
--> 123.4 , 120
--> 버림은 버리는거기 때문에 -123이 되고 내림은 내리는거기 때문에 -124가 된다.
SYSDATE
- 시스템에 저장되어 있는 현재 날짜를 반환
MONTHS_BETWEEN
- 날짜 두 개를 전달받아 개월 수 차이를 숫자 데이터형으로 반환
ADD_MONTHS, LAST_DAY
EXTRACT
- 년, 월, 일 정보를 추출하여 리턴
형변환 함수
- 문자열(CHAR), 숫자(NUMBER), 날짜(DATE) 끼리 형변환 가능
- TO_CHAR(날짜, [포맷]) : 날짜형 데이터를 문자형 데이터로 변경
- TO_CHAR(숫자, [포맷]) : 숫자형 데이터를 문자형 데이터로 변경
--> 년, 월, 일은 오라클에 등록된 날짜 표기 패턴이 아니기 때문에 " " (쌍따옴표)로 감싸줘서 문자열 그대로를 출력하게 함
- TO_DATE : (문자형 데이터, [포맷] ) : 문자형 데이터를 날짜로 변경
- TO_DATE : (숫자형 데이터, [포맷] ) : 숫자형 데이터를 날짜로 변경
--> 10/01/03
- TO_NUMBER(문자데이터, 포맷) : 문자형 데이터를 숫자 데이터로 변경
--> 첫번째 구문은 문자형과 숫자의 덧셈은 같은 타입이 아니기 때문에 오류가 발생하지만
두번째 구문은 TO_NUMBER로 문자형 데이터를 숫자형으로 변환 후 10을 더한거기 때문에 1000010이 출력된다.
NULL 처리 함수
- NVL(컬럼명, 컬럼값이 NULL일때 바꿀 값) : NULL인 컬럼값을 다른값으로 변경
--> BONUS 가 NULL인 직원들을 NVL을 사용해서 NULL값 대신 0을 넣어줬다.
- NVL2(컬럼명, 바꿀값1, 바꿀값2) : 해당 컬럼의 값이 있으면 바꿀값1로 변경, 해당 컬럼이 NULL이면 바꿀값2로 변경
DECODE
- 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환(자바의 SWITCH문과 비슷함)
- 작성법 : DECODE(계산식 | 컬럼명, 조건값1, 선택값1, 조건값2, 선택값2...아무것도 일치하지 않을때)
--> SUBSTR로 주민등록번호 뒷자리를 잘라내온 다음에 앞자리가 1이면 남자, 2이면 여자가 출력되게 작성했다.
CASE
- 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환
- 조건은 범위 값 가능
- 작성법 : CASE WHEN 조건식1 THEN 결과1
WHEN 조건식2 THEN 결과2
ELSE 결과값
END
COUNT
- 테이블 조건을 만족하는 행의 개수 반환