SQL
SQL Function
#풀닢
2023. 1. 12. 00:45
함수(FUNCTION) | 컬럼 값을 읽어서 계산한 결과를 리턴한다. |
단행행(SINGLE ROW) 함수 | 컬럼에 기록된 N개의 값을 읽어서 N개의 결과를 리턴 |
그룹(GROUP) 함수 | 컬럼에 기록 된 N개의 값을 읽어서 한 개의 결과를 리턴, 합계와평균의미 |
따라서 SELECT절에 단일행 함수와 그룹 함수를 함께 사용할 수 없다. 결과 행의 갯수가 다르다. |
그룹 함수 : SUM, AVG, MAX, MIN, COUNT | |
SUM(숫자가 기록된 컬럼명) 합계를 구하여 리턴 |
SUM(SALARY) |
SELECT
SUM(SALARY)
FROM EMPLOYEE;
AVG(숫자가 기록된 컬럼명) 평균을 구하여 리턴 |
AVG(SALARY) |
SELECT
AVG(SALARY)
FROM EMPLOYEE;
MAX(컬럼명) 컬럼에서 가장 큰 값 리턴. 취급하는 자료형은 ANY TYPE. |
MAX(EMAIL) ,MAX(HIRE_DATE) ,MAX(SALARY) |
SELECT
MAX(EMAIL)
,MAX(HIRE_DATE)
,MAX(SALARY)
FROM EMPLOYEE;
MIN(컬럼명) 컬럼에서 가장 작은 리턴. 취급하는 자료형은 ANY TYPE. |
MIN(EMAIL) ,MIN(HIRE_DATE) ,MIN(SALARY) |
SELECT
MIN(EMAIL)
,MIN(HIRE_DATE)
,MIN(SALARY)
FROM EMPLOYEE;
COUNT (* | 컬럼명) | 행의 갯수를 헤아려서 리턴한다. |
COUNT ([DISTINCT] 컬럼명) | 중복을 제거한 행 갯수 리턴 |
COUNT(*) | NULL을 포함한 전체 행 갯수 리턴 |
COUNT(컬럼명) | NULL을 제외한 실제 값이 기록 된 행 갯수 리턴 |
COUNT(*) ,COUNT(DEPT_CODE) ,COUNT(DISTINCT DEPT_CODE) |
SELECT
COUNT(*)
,COUNT(DEPT_CODE)
,COUNT(DISTINCT DEPT_CODE)
FROM EMPLOYEE;
단일행 함수 한글자당 3바이트라서 9바이트 |
문자 관련 함수 LENGTH, LENGTHB, SUBSTR, UPPER, LOWER, INSTR... |
LENGTH LENGTHB |
LENGTH('오라클') , LENGTHB('오라클') |
SELECT
LENGTH('오라클')
, LENGTHB('오라클')
FROM DUAL;
LENGTH LENGTHB |
LENGTH(EMAIL) , LENGTHB(EMAIL) |
SELECT
LENGTH(EMAIL)
, LENGTHB(EMAIL)
FROM EMPLOYEE;
INSTR | ('문자열' | 컬럼명, '문자', 찾을 위치의 시작값, [빈도]) |
찾고자하는 문자 INSTR(EMAIL, '@', -1) 위치 | EMAIL , INSTR(EMAIL, '@', -1) 위치 |
SELECT
EMAIL
, INSTR(EMAIL, '@', -1) 위치
FROM EMPLOYEE;
SELECT INSTR('AABAACAABBAA', 'B') FROM DUAL;
SELECT INSTR('AABAACAABBAA', 'B', 1) FROM DUAL;
SELECT INSTR('AABAACAABBAA', 'B', -1) FROM DUAL;
SELECT INSTR('AABAACAABBAA', 'B', 1, 2) FROM DUAL;
SELECT INSTR('AABAACAABBAA', 'B', -1, 2) FROM DUAL;
LPAD / RPAD | 어진 컬럼 문자열에 임의의 문자열을 덧붙여 |
길이 N의 문자열을 반환하는 함수 | LPAD(EMAIL, 20, '#') |
SELECT
LPAD(EMAIL, 20, '#')
FROM EMPLOYEE;
SELECT
LPAD(EMAIL, 10)
FROM EMPLOYEE;
SELECT
RPAD(EMAIL, 10)
FROM EMPLOYEE;
LTRIM / RTRIM | 주어진 컬럼이나 문자열 왼쪽/오른쪽에서 지정한 문자 혹은 문자열을 제거한 나머지를 반환하는 함수이다. |
SELECT LTRIM(' GREEDY') FROM DUAL;
SELECT LTRIM(' GREEDY', ' ') FROM DUAL;
SELECT LTRIM('000123456', '0') FROM DUAL;
SELECT LTRIM('123123GREEDY', '123') FROM DUAL;
SELECT LTRIM('132123GREEDY123', '123') FROM DUAL;
SELECT LTRIM('ACABACGREEDY', 'ABC') FROM DUAL;
SELECT LTRIM('5782GREEDY', '0123456789') FROM DUAL;
SELECT RTRIM('GREEDY ') FROM DUAL;
SELECT RTRIM('GREEDY ', ' ') FROM DUAL;
SELECT RTRIM('123456000', '0') FROM DUAL;
SELECT RTRIM('GREEDY123123', '123') FROM DUAL;
SELECT RTRIM('123123GREEDY123', '123') FROM DUAL;
SELECT RTRIM('GREEDYACABAC', 'ABC') FROM DUAL;
SELECT RTRIM('GREEDY5782', '0123456789') FROM DUAL;
기본적으로는 공백 제거 TRIM |
주어진 컬럼이나 문자열의 앞/뒤에 지정한 문자를 제거 |
기본적으로는 공백 제거 LEADING |
왼쪽 |
SELECT TRIM(' GREEDY ') FROM DUAL;
SELECT TRIM('Z' FROM 'ZZZGREEDYZZZ') FROM DUAL;
SELECT TRIM(LEADING 'Z' FROM 'ZZZGREEDYZZZ') FROM DUAL;
SELECT TRIM(TRAILING 'Z' FROM 'ZZZGREEDYZZZ') FROM DUAL;
SELECT TRIM(BOTH 'Z' FROM 'ZZZGREEDYZZZ') FROM DUAL;
SUBSTR | 컬럼이나 문자열에서 지정한 위치로부터 지정한 갯수의 문자열을 잘라서 리턴하는 함수이다. 7부터 끝까지 |
SELECT SUBSTR('SHOWMETHEMONEY', 5, 2) FROM DUAL;
SELECT SUBSTR('SHOWMETHEMONEY', 7) FROM DUAL;
SELECT SUBSTR('SHOWMETHEMONEY', -8, 3) FROM DUAL;
SELECT SUBSTR('쇼우 미 더 머니', 2, 5) FROM DUAL;
SMALL