상세 컨텐츠

본문 제목

[데이터베이스] 골치아픈 함수(function) 한 방에 정리하기

Data Base_데이터베이스

by 쫑메이 2020. 6. 14. 00:39

본문

 

 

 

 

 

 

 

 

database

 

 

 

 

 

 

함수(function)에 대한 이야기를 해볼까요?

함수하면 머리 아픈 수학이 떠오르죠?

하지만 프로그램안에서 함수는 그렇게 골치아프진 않은거 같아요

할 만하다는 얘기죠...

(수포자가 하는 이야기니 믿을만 할 듯......)

 

 

함수란??

어떤 재료를 넣어 새로운 값을 만드는 틀이라고 생각하면

이해하기 쉬워요.

 

 

데이터바이스에서 말하는 함수들을 하기 위해서 

재료들이 필요하겠죠? 단순한' 단일 행 함수'부터 정리해봤어요.

살펴보실까요??

 

 

 

 

 

단일 행 함수(Single-row Function)

 

 

질의문(쿼리문)의 출력결과의 개별 행마다 실행 결과를 내놓는 형태의 함수.

SELECT 구문은 데이터를 조회하는 구문으로 함수 포함되어 있더라도

저장된 데이터가 변경되지 않고, 출력 시에만 함수가 적용된 결과를 출력해준다.

 

 

 

 

 

 

<대소문자 변환 함수>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<문자 조작 함수 종류_정리>

 

 

 

 

 

 

 

 

 

 

 

<문자 조작 함수 _substr>


 

 

substr는 추출하라는 뜻

 

[규칙]

substr(자를 위치(기준),자를 칸 수)

 

자를 위치는

마이너스가능,하지만 자를 칸수 자리는 마이너스 불가능!!!

 

 

[글자의 자릿수 세는 것]

방향------------->

h e l l o w o r l d

1 2 3 4 5 6 7 8 910

 

d l r o w o l l e h

| –1-2-3-4-5-6-7-8-9-10

방향------------------->

 

예제>hire_date(-2,2) ==>끝에서 두 자리 글자에서 두 자리만 추출하라는 뜻이다

 

 

 

 

 

 

 

 

 

 

 

 

<문자함수_ lpad/rpad>


 

 

**

left에 여백 채우다

right에 여백을 채우다

pad=‘여백을 채우다’라는 뜻이다

 

 

예>lpad(salary,10,*)결과> *****24000

예>rpad(salary,10,*) 결과> 24000*****

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<문자 함수 _ concat>


 

 

**

concat(‘hello’,‘world’) 연결하라는 건데

 

 

 

보통 이렇게 많이 쓴다

 

예>select concat (‘hello’,‘world’)

from dual;

 

 

 

 

 

 

 

 

 

 

 

<문자 조작 함수_trim>


 

**

trim은 남자 수염깍을 때,, 기계를 떠올려보면 '깎다'라는 뜻을

유추해볼수 있다

양쪽에 조건에 걸리는 것은 다 잘라준다

 

<예시>

select trim(‘h’ from ‘hhhhhhellworldhhhh’)

from dual;

 

 

결과> elloword

밖에 있는 h는 다 사라진다

 

 

 

실제 많은 쓰는 <예>

select trim(‘ ’ from ‘ hello,world ’)

from dual;

 

이렇게 하면 결과가 공백을 없애고==>hello world

 

*참고로 dual은 최고관리자 계정이 가진 테이블, 결과를 볼 때 쓰라고 만든 (가상)테이블

 

 

 

 

 

 

 

<숫자 함수>


 

4   5. 9   2    6

-2-1 |+1, 2, 3

 

예>round(49.923,2) 결과>49.92

소수점자리 2번째까지 남기는데

뒤에 숫자가 5이상이면 반올림

예>round(49.923,0) 결과>50

예>round(49.923,-1) 결과>50

예>trunc(49.923,2) 결과>49.92

 

 

예>round(49.923) 결과>50

예>trunc(49.923) 결과>49

==> 뒤에 자릿수자리에 아무 숫자도 안온다면 소수점을 기준으로 판단한다

 

 

 

 

 

 

 

 

 

 

 

<숫자 함수_MOD: 나머지>


 

 

*MOD(나눠지는 수, 나누는 수)

-나눈 나머지를 출력해주는 함수

 

예시> select trunc(1600/300), mod(1600,300)

from dual;

결과> 5 100

 

 

 

 

 

 

 

 

 

 

 

 

<종합 예문>


 

 

<예시 1>

select ‘The job is for’ || upper(last_name)||’is’||lower(job_id) as “EMPLOYEE DETAILS”

FROM employees;

 

 

 

 

 

 

 

 

 

 

 

 

<예시 2> select employee_id, concat(first_name,last_name) NAME,

length(last_name), instr(last_name, ‘a’)

from employees

where substr(last_name,-1,1)=’n’;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<예시 3>

select employee_id, concat(first_name,last_name) NAME, job_id, length(last_name),instr(last_name,‘a’) “Contains ‘a’?”

from employees

where substr(job_id,4)=’REP’;

 

 

 

 

 

 

 

 

 

 

 

 

<날짜 함수>


select sysdate

from dual;

 

 

' sysdate'는 오늘 날짜를 말함

 

 

 

 

 

 

 

<날짜를 사용한 산술 연산>


 

1) 날짜+ 숫자= 날짜에 일수(숫자)를 더한 날짜가 나옴

 

2)날짜-숫자= 날짜에 일수(숫자)를 뺀 날짜가 나옴

 

3) 날짜-날짜= 한 날짜에서 다른 날짜를 뺀다

 

4)날짜+숫자/24 =날짜에 시간 수를 더한다

예> 1일=24시간

1시간=1/24

 

 

 

 

<예시>

select last_name,(sysdate-hire_date)/7 AS weeks

from employees

 

 

 

 

 

 

 

 

 

<날짜 조작 함수>


 

 

 

MONTHS_BETWEEN

입력한 두 날짜간의 몇 개월 차이나는 지를 숫자로 출력해주는 함수

앞의 날짜에서 뒤의 날짜를 빼는 식으로 연산

 

 

 

 

 

 

 

ADD_MONTHS

날짜에 월을 추가

 

 

 

 

 

 

NEXT_DAY

 

 

 

 

 

 

LAST_DAY

월의 마지막 날짜

 

 

 

 

 

 

 

<ROUND/TRUNC>

 

 

ROUND

날짜의 반올림

 

 

 

 

TRUNC

날짜 자릿수대로 짜름

 

 

 

 

<예시>sysdate=’25-jul-03’;이라고 한다면

 

 

 

 

 

 

 

 

 

 

 

 

 

<변환 함수>


 

문법

to_char(date,‘ ’)

 

to_char(date,'DD MM YYYY')

 

 

- 시간 요소는 날짜에서 시간 부분의 형식을 지정한다

- 문자열은 큰 따옴표로 묶어 추가한다

- 숫자 접미어는 숫자를 영어 철자로 표기한다

 

 

 

 

 

 

 

 

<날짜 형식 요소>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅣ읽느라 수고 많으셨어요~ㅣ

 

 


 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 


 

 

반응형

관련글 더보기