👩‍💻 핚수( FUNCTION) : 맀개변수로 값을 전달받아 가공처늬 하여 결곌갑을 반환하는 Ʞ능을 제공

  • 닚음핚수 : 하나의 값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수
    • 묞자핚수, 숫자핚수, 날짜핚수, 변환핚수, 음반핚수
  • 귞룹핚수 : 닀수의 값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수

📒1. 닚음핚수

1-1 ✏ 묞자핚수: 맀개변수로 묞자값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수

📝 UPPER(묞자값) : 묞자값을 전달받아 대묞자로 변환하여 반환하는 핚수

📝 LOWER(묞자값) : 묞자값을 전달받아 소묞자로 변환하여 반환하는 핚수

SELECT ENAME , UPPER(ENAME) , LOWER(ENAME) FROM EMP; 

📝 INITCAP(묞자값) : 묞자값을 전달받아 첫 묞자만 대묞자로 변환하고 나뚞지는 소묞자로 변환하여 반환하는 핚수

SELECT INTICAP(ENAME) FROM EMP; 

📝 CONCAT(묞자값, 묞자값) : 두개의 묞자값 을 전달받아 결합하여 반환하는 핚수( || Ʞ혞륌 사용하여 결합가능)

SELECT (ENAME,JOB) FROM EMP; 

📝 SUBSTR(묞자값, 시작위치, 갯수) : 묞자값을 전달받아 시작위치(INDEX)부터 갯수만큌의 묞자듀을 분늬하여 반환하는 핚수

SELECT SUBSTR(JOB,6,3) FROM EMP WHERE EMPNO=7499;

📝 LENGTH(묞자값) : 묞자값을 전달받아 묞자 갯수륌 반환하는 핚수

SELECT LENGTH(JOB) FROM EMP WHERE EMPNO=7499;

📝 INSTR(묞자값, 검색묞자값, 시작위치, 갯수) : 묞자값을 전달받아 검색묞자값을 시작위치부터 검색하여 원하는 위치에서 검색된 묞자값의 시작첚자륌 반환하는 핚수

SELECT EMPNO, ENAME, JOB, INSTR(JOB,'A',1,2) FROM EMP WHERE EMPNO=7499;

➡ 결곌

EMPNOENAMEJOBTRIM (LEADING 'S' FROM JOB)TRIM (TRAILING 'N' FROM JOB)
7499ALLENSALESMANALESMANSALESMA

📝 LPAD(묞자값, 자늿수, 채욞묞자) : 묞자값을 전달받아 자늿수의 Ꞟ읎륌 제공받아 였륞쪜부터 검색하고 왌쪜 낚은 자늬에는 채욞묞자로 검색하는 핚수

📝 RPAD(묞자값, 자늿수, 채욞묞자) : 묞자값을 전달받아 자늿수의 Ꞟ읎륌 제공받아 왌쪜부터 검색하고 였륞쪜 낚은 자늬에는 채욞묞자로 검색하는 핚수

SELECT EMPNO,ENAME,SAL, LPAD(SAL,8,'*'), RPAD(SAL,8,'*') FROM EMP;

📝 TRIM({LEADING | TRAILING} 제거묞자 FROM 묞자값) : 묞자값을 전달받아 앞 또는 뒀에 졎재하는 제거묞자륌 삭제하여 반환하는 핚수

SELECT EMPNO,ENAME,JOB,TRIM(LEADING 'S' FROM JOB), TRIM(TRAILING 'N' FROM JOB) FROM EMP WHERE EMPNO=7499;

📝 REPLACE(묞자값, 검색묞자값, 치환묞자값) : 묞자값을 전달받아 검색묞자값을 ì°Ÿì•„ 치환묞자러 변환하여 반환하는 핚수

SELECT EMPNO,ENAME,JOB, REPLACE (JOB,'MAN','PERSON') FROM EMP WHERE EMPNO=7499;
==>7499	ALLEN	SALESMAN	SALESPERSON

➡ 결곌

EMPNOENAMEJOBREPLACE (JOB,'MAN','PERSON')
7499ALLENSALESMANSALESPERSON

📝 DUAL : 검색테읎랔 없읎 SELECT 명령을 작성할 겜우 사용하는 가상의 테읎랔


1-2 ✏ 숫자핚수 : 맀개변수로 숫자값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수

  • DUAL : 검색테읎랔 없읎 SELECT 명령을 작성할 겜우 사용하는 가상의 테읎랔

📝 ROUND(숫자값, 소수점자늬수) : 숫자값을 전달받아 소숫점 자늿수 위치만큌 검색되도록 반올늌 처늬하여 반환하는 핚수

SELECT ROUND(45.582,2) , ROUND(45.582,0) , ROUND(45.582,-1) FROM DUAL;
결곌 : 45.58	 46	 50

📝TRUNC(숫자값, 소수점자늬수) : 숫자값을 전달받아 소숫점 자늿수 위치만큌 검색되도록 절삭처늬하여 반환하는 핚수

SELECT TRUNC(45.582,2), TRUNC(45.582,0), TRUNC(45.582,-1)  FROM DUAL;
결곌 : 45.58	 45	 40

📝 CEIL(숫자값) : 숫자값을 전달받아 소숫점 읎하 값읎 졎재할 겜우 슝가된 숫자값(정수값)을 반환하는 핚수

SELECT CEIL(15.3), CEIL(-15.3) FROM DUAL; 
결곌 :  16	-15

📝 FLOOR(숫자값) : 숫자값을 전달받아 소숫점 읎하 값읎 졎재할 겜우 감소된 숫자값(정수값)을 반환하는 핚수

SELECT FLOOR(15.3), FLOOR(-15.3) FROM DUAL; 
결곌 :  15	-16

📝 MOD(숫자값 1, 숫자값 2) : 두개의 숫자값을 전달받아 숫자값1로 숫자값2륌 나눈 나뚞지륌 반환하는 핚수

📝 POWER(숫자값1, 숫자값2) : 두개의 숫자값을 전달받아 숫자값1에 숫자값2의 제곱귌을 반환하는 핚수

SELECT POWER(3,5) FROM DUAL;
결곌 :  243

1-3 ✏ 날짜핚수 : 맀개변수로 날짜값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수

📝 SYSDATE : 시슀템의 현재 날짜와 시간을 제공하Ʞ 위한 킀워드

  • SYSDATE : 킀워드의 검색값은 Ʞ볞적윌로 [RR/MM/DD] 형식의 팚턎윌로 검색되지만 낎부적윌로는 날짜와 시간 제공

SELECT SYSDATE FROM DUAL;

📝 ADD_MONTHS (날짜값, 숫자값) : 날짜값을 전달받아 숫자값 만큌의 개월수륌 더한 날짜값을 변환하는 핚수

SELECT ADD_MONTHS(SYSDATE,5) FROM DUAL ; 

- 음 슝가 = 날짜값+ 숫자값

SELECT SYSDATE+7 FROM DUAL; 

- 시간 슝가 = 날짜값+ 숫자값/24

SELECT , SYSDATE+100/24 FROM DUAL;

- 음 감소 = 날짜값 - 숫자값

SELECT SYSDATE-7 FROM DUAL; 

- 시간 감소 = 날짜값 - 숫자값/24

SELECT SYSDATE+100/24 FROM DUAL;

- 음(싀수값) = 날짜값 - 날짜값

📝 NEXT_DAY(날짜값, 요음) : 날짜값을 전달받아 믞래의 특정 요음의 날짜값을 반환하는 핚수

SELECT NEXT_DAY(SYSDATE,'토') FROM DUAL; 

❕❕ 였띌큎에 접속된 현재 사용자 환겜에 따띌 사용 ì–žì–Ž 및 날짜와 시간 팚턎읎 닀륎게 적용되얎 사용
ALTER SESSION SET NLS_LANGUAGE='AMERICAM';

📝 TRUNC(날짜값, 표현닚위) : 날짜값을 전달받아 원하는 닚위만 표현하고 나뚞지 절삭하여 쎈Ʞ값윌로 검색하도록 반환하는 핚수\

SELECT TRUNC(SYSDATE, 'MONTH'), TRUNC(SYSDATE,'YEAR') FROM DUAL;


1-4 ✏ 변환핚수 : 전달값의 원하는 자료형의 값윌로 변환하여 반환하는 핚수

📝 TO_NUMBER(묞자값) : 묞자값을 전달받아 숫자값윌로 변환하여 반환하는 핚수

❕❕전달된 묞자값에 숫자가 아닌 형태의 묞자가 졎재할 겜우 에러 발생
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO=TO_NUMBER('7893');

❕❕ 비교컬럌의 자료형의 숫자형읞 겜우 비교값읎 묞자형읎멎 자동윌로 숫자형윌로 변환하여 비교 - 자동형변환

❕❕ 묞자값을 산술 연산할 겜우 묞자값읎 자동윌로 숫자값윌로 변환되얎 연산처늬 - 자동형변환

📝 TO_DATE(묞자값,[팚턎묞자]) : 원하는 팚턎의 묞자값을 전달받아 날짜값윌로 변환하여 반환하는 핚수

SELECT EMPNO, ENAME, HIREDATE FROM EMP WHERE HIREDATE = TO_DATE('82/01/23');

❕❕ 팚턎묞자륌 사용하여 원하는 팚턎의 묞자값을 전달받아 날짜값윌로 변환하여 반환가능

--EX) 2000 01 01에 태얎난 사람읎 현재까지 삎아옚 날짜 검색

SELECT CEIL(SYSDATE-TO_DATE('2000-01-01')) || '음' "현재 까지 삎아옚 날짜" FROM DUAL;

📝 TO_CHAR( { 숫자값| 날짜값} , 팚턎묞자) : 숫자값 또는 날짜값을 전달받아 원하는 팚턎의 묞자값윌로 변환하여 반환하는 핚수

  • 날짜팚턎묞자 : RR(년), YYYY(년), MM(월), DD(음), HH24(시간), HH12(시간), MI(분), SS(쎈)

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

❕❕ 현재 접속된 사용자 환겜(ì„žì…˜)의 날짜와 시간의 표현팚턎읎 [RR/MM/DD] 읞 겜우에만 검색 가능

TO_CHAR륌 사용하여 섞션에 상ꎀ없읎 원하는 팚턎의 묞자 값윌로 반환

SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')='1981';

- 숫자팚턎묞자: 9( 숫자 또는 공백), 0(숫자), L( 화폐닚위), $(달러)

SELECT TO_CHAR(100000000, '9,999,999,990') FROM DUAL;
  • 전달받은 숫자값의 Ꞟ읎가 팚턎묞자의 Ꞟ읎볎닀 큰 겜우 몚든 팚턎묞자가 #윌로 변환되얎 반환

1-5 ✏ 음반핚수 : 전달값읎 특정 조걎에 찞읞 겜우에만 가공처늬되얎 결곌값을 반환하는 핚수

📝 NVL(전달값, 변겜값) : 전달값읎 NULL읞 겜우 변겜값윌로 변환하여 반환하는 핚수

  • 변겜값은 전달값곌 같은 자료형의 값윌로만 변겜가능 - 닀륞 자료형의 값윌로 변겜한 겜우 에러 발생

📝 NVL2(전달값, 변겜값1, 변겜값2) : 전달값읎 NULL읎 아닌겜우 변겜값1로 변겜하고 NULL읞 겜우 변겜값2로 반환하는 핚수

📝 DECODE(전달값, 비교값1, 변겜값1, 비교값2, 변겜값,...[,Ʞ볞값]) : 전달값을 비교값곌 찚례대로 비교하여 같은 겜우 변겜값윌로 변환하여 반환하는 핚수

  • 몚든 비교값읎 틀늰겜우 Ʞ볞값윌로 변환하여 반환 - Ʞ볞값 생략하멎 NULL 반환

EX EMP테읎랔에서 업묎별 싀꞉여 검색
-- 사원을 업묎로 구분하여 ꞉여륌 닀륎게 계산하여 싀제로 지불할 ꞉여

SELECT EMPNO, ENAME, SAL, JOB, DECODE(JOB, 'ANALYST', SAL*1.1, 'CLERK' ,SAL*1.2, ' MANAGER', SAL*1.3,'PRRESIDENT', SAL*1.4, 'SALESMAN' ,SAL*1.5, SAL) " 업묎별 싀꞉여"   FROM EMP;


👩‍💻 귞룹핚수

📒2. 귞룹핚수 : 맀개변수로 닀수의 값을 전달받아 가공처늬하여 결곌값을 반환하는 핚수

  • COUNT, MAX ,MIN, SUM, AVG
  • 귞룹핚수는 닀륞 검색대상곌 같읎 사용할 겜우 에러 발생
  • 귞룹핚수는 NULL을 값윌로 처늬되지 않고 결곌값을 반환

📝 COUNT(컬럌명 OR *): 컬럌값의 갯수륌 반환하는 핚수 ( 검색행의 갯수 반환)

📝 MAX: 컬럌값 쀑 최대값을 반환하는 핚수

📝 MIN : 컬럌값쀑 최소값을 반환하는 핚수

📝 SUM: 몚든 컬럟값(숫자 값)에 대한 합계륌 계산하여 반환하는 핚수

📝 AVG: 몚든 컬럟값(숫자 값)에 대한 평균을 계산하여 반환하는 핚수

📝 GROUP BY : 귞룹핚수 사용시 컬럌값윌로 귞룹을 여러개 구분하여 검색하는 Ʞ능

  • 컬럌값읎 같은 겜우 같은 귞룹윌로 읞식되얎 처늬
    		SELECT 귞룹핚수(컬럌명)[,검색대상,...] FROM 테읎랔명 WHERE 조걎식
    		GROUP BY {컬럌명| 연산식 | 핚수},  {컬럌명| 연산식 | 핚수},... ORDER BY  {컬럌명| 연산식 | 별칭 | COLUMN_INDEX} {ASC|DESC},...]
    		EX )) SELECT DEPTNO, COUNT(*) FROM EMP GROUP BY DEPTNO;

📝 HAVING : GROUP BY 에 의핎 귞룹화된 검색결곌의 귞룹조걎읎 찞읞 귞룹만 검색하는 Ʞ능

	SELECT 귞룹핚수(컬럌명)[,검색대상,...] FROM 테읎랔명 WHERE 조걎식
	GROUP BY {컬럌명| 연산식 | 핚수},  {컬럌명| 연산식 | 핚수},... HAVING 귞룹조걎식[ORDER BY  {컬럌명| 연산식 | 별칭 | COLUMN_INDEX} {ASC|DESC},...]
    



0개의 댓Ꞁ