ORACLE DB

▶함수◀

chojdsj 2023. 5. 18. 22:13
728x90
함수

 

- 하나의 큰 프로그램에서 반복적으로 사용되는 부분들을 분리하여 작성해 놓은 작은 서브 프로그램. 호출하며 값을 전달하면 결과를 리턴하는 방식으로 사용. 컬럼의 값을 읽어서 연산한 결과를 반환

- 단일행 함수 : 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

 

- 테이블 조건을 만족하는 행의 개수 반환 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'ORACLE DB' 카테고리의 다른 글

▶TCL◀  (0) 2023.05.25
▶DML◀  (0) 2023.05.25
▶JOIN◀  (0) 2023.05.25
▶GROUP BY◀  (0) 2023.05.25
▶SELECT◀  (0) 2023.05.18