Database SQL/Oracle

[DB#18] 오라클 함수

양동민 2020. 11. 26. 14:55

오라클에는 다양한 함수들이 존재한다.  오라클 내장 함수는 오라클이 제공하는 기본 연산 기능이다.

SINGLE-ROW FUNCTION은 단일함수로, 단일 행에 대한 계산을 처리하는 함수이다.

AGGREGATE FUNCTION은 집계함수로, 여러 데이터를 집계하여 계산을 처리하는 함수이다.

 

듀얼테이블 : 임시로 사용할 수 있는, 임시로 결과를 저장할 수 있는 테이블

SELECT * FROM DUAL;

ex) SELECT 1234+5678 FROM DUAL; -> 하면 6912라는 계산결과가 나온다.

 

 

UPPER : 모든 글자를 대문자로 변환

ex) SELECT UPPER('hello') "결과" FROM DUAL; -> HELLO 라는 계산 결과가 나온다.

 

 

LOWER : 모든 글자를 소문자로 변환

ex) SELECT LOWER('HELLO') "결과" FROM DUAL; -> hello 라는 계산 결과가 나온다.

 

 

INITCAP : 첫글자만 대문자로 변환

ex) SELECT INITCAP('hello oracle') "결과" FROM DUAL; -> Hello Oracle 라는 계산 결과가 나온다.

 

 

SUBSTR : 문자열 추출(자르기, 원하는 부분 추출)

ex) SELECT SUBSTR('ABCDEFG', 3) "결과" FROM DUAL; -> CDEFG가 계산 결과로 나온다.

자바에서는 01234.. 순으로 0부터시작이지만 오라클은 1234.. 순으로 1부터 시작한다.

또는,

ABCDEFG에서 3번째부터 2개만 볼 수 있도록 자른다면,

 SELECT SUBSTR('ABCDEFG', 3, 2) "결과" FROM DUAL; -> CD가 계산 결과로 나온다.

 

 

REPLACE : 문자열 교체(치환)

ex) SELECT REPLACE('이런 신발끈 개나리같은 수박씨야!', '신발끈', '***' ) FROM DUAL;

하면 이런 *** 개나리같은 수박씨야! 라고 결과가 나온다.

 

그리고 이런 식도 존재하는데,

SELECT REGEXP_REPLACE('이런 신발끈 개나리같은 수박씨야!', '신발끈|개나리|수박씨', '***' ) FROM DUAL;

또한 어떤 테이블에 고객명단이 있다고 가정하였을 때, 데이터 중 이름을 성만 놔두고 *로 바꿔서 출력(주민번호뒷자리처럼) 그러면 SUBSTR로 첫글자만 잘라내고,  **을 더해서 붙여준다.

SELECT SUBSTR(PERSON_NAME, 1, 1) FROM 테이블명;

SELECT SUBSTR(PERSON_NAME, 1, 1) || '**' FROM 테이블 명;

+) RPAD라는게 존재하는데 다음에 공부해봐야 겠다.

 

집계함수 : 최대, 최소, 합계, 평균, 개수

 

MAX : 최대값

SELECT MAX(ASCORE) FROM 테이블명; -> 테이블 내의 A항목 최고점수가 출력된다.

ASCORE 대신 PERSON_NAME 사람명을 입력해도 나오는데, 한글도 숫자로 되어있어서 출력이 가능하다.

그 외에도 날짜또한 모두 나온다.

 

MIN : 최소값

SELECT MIN(ASCORE) FROM 테이블명; -> 테이블 내의 A항목 최저점수가 출력된다.

 

SUM : 합계

SELECT SUM(ASCORE) FROM 테이블명; -> 테이블 내의 A항목 총 합계가 출력된다.

 

AVG : 평균

SELECT AVG(ASCORE) FROM 테이블명; -> 테이블 내의 A항목 평균이 출력된다.

 

COUNT : 개수

SELECT COUNT(PERSON_NO) FROM 테이블명; -> 테이블 내의 사람 수가 출력된다.

PERSON_NO 대신 * 와일드카드를 집어넣어도 같다. 

하지만 차이는 PERSON_NO는 번호가 몇개있나요? 라고 묻는것이고, *와일드카드는 데이터가 몇개있나요?(비어있는것포함)으로 묻는 것이다.