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