본문 바로가기
IT/SQLP

[SQL 기초강의] 5강. SQL 함수 (Function)

by by디디 2022. 4. 26.
반응형

2022.04.25 - [IT/SQLP] - [SQL 기초강의] 4강. WHERE

 

[SQL 기초강의] 4강. WHERE

2022.04.22 - [IT/SQLP] - [SQL 기초강의] 3강. NULL, DISTINCT [SQL 기초강의] 3강. NULL, DISTINCT 2022.04.14 - [IT/SQLP] - [SQL 기초강의] 2강. SELECT [SQL 기초강의] 2강. SELECT 2022.04.13 - [IT/SQLP] -..

zaop.tistory.com

 

* 함수구분

함수 구분 설명
문자 문자를 입력 값으로 받으며 문자 또는 숫자 값을 반환 합니다.
숫자 숫자를 입력하면 숫자 값을 반환합니다.
날짜 DATE 데이터 유형의 값에 동작합니다. 모든 날짜 함수는 DATE 데이터 유형 값을 반환하며  MONTHS_BETWEEN 함수만 숫자를 반환합니다.
변환 값의 데이터 유형을 변환합니다.
일반 NVL, NVL2, DECODE, CASE

 

* 문자함수

함수 용도 예제
upper 알파벳 값을 대문자로 변환 select *
from   (select 'aBcD' ori_col from dual) t1,
       (select upper('aBcD') upper_col from dual) t2,
       (select lower('aBcD') lower_col from dual) t3
lower 알파벳 값을 소문자로 변환
concat 두 문자열을 하나로 연결.
||
과 동일해서 자주 사용 안함
select concat('aa','bb') from dual;
select 'aa'||'bb' from dual;
substr 문자열중 원하는 부분만 선택
(
문자 수 기준)

(세 번째 인자값이 없을 경우 문자열의 끝까지를 의미)
select ori_col
     , substr(ori_col,1,2)
     , substr(ori_col,3,4)
from   ( select '123456' ori_col from dual );
select ori_col
     , substr(ori_col,1,2)
     , substr(ori_col,3,3)
from   ( select '가나다라마바사' ori_col from dual );
substrb substr과 달리 문자수가 아닌 문자의 byte 기준 select ori_col
     , substrb(ori_col,1,2)
     , substrb(ori_col,3,3)
from   ( select '123456' ori_col from dual );
select ori_col
     , substrb(ori_col,1,2)
     , substrb(ori_col,3,3)
from   ( select '가나다라마바사' ori_col from dual );
함수 용도 예제
replace 첫 번째 인자 값에서 두 번째 인자 값에 해당하는 문자를 세 번째 인자 값으로 바꿈 select replace('Oracle 10g','10g', '11g') from dual;
length 문자열 길이를 구함
(문자 수 기준)
select length('123') from dual;
select length('가나다') from dual;
lengthb 문자열 길이를 구함
(Bytes
기준)
select lengthb('123') from dual;
select lengthb('가나다') from dual;
lpad 첫째 인자에 둘째 인자를 셋째 인자 길이(Byte)가 될 때까지 왼쪽부터 채움. select lpad('123',10,'*') from dual
union all
select lpad('가나다',10,'*') from dual;
rpad lpad와 달리 오른쪽을 채움  
ltrim 왼쪽부터 해당 문자 제거.
인자 값 없을 시 공백 제거
select ltrim(' xxAxBC') from dual;
select ltrim('xxAxBC','x') from dual;
à왼쪽부터 x 아닌 문자를 만날 때까지 x를 제거한 후
 
나머지를 리턴.
select ltrim(' ') from dual; à null과 동일
rtrim ltrim과 달리 오른쪽부터 수행.  
trim 왼쪽과 오른쪽의 공백을 제거 select trim(' xxAxBC ') from dual;
select trim('xxAxBCxx','x') from dual; à 오류
함수 용도 예제
ascii 특정 값의 아스키코드를 리턴 select ascii('A') from dual;
instr 문자열에서 특정 문자의 위치를 리턴.


찾는 값이 없으면 0 리턴.


양쪽 % 사용 like 대체로 사용 가능.
select instr('abcabcabc','c',1,2) from dual;
select instr('abcabcabc','c',4,2) from dual;


select *
from   (
         select 'abcd' col1 from dual union all
         select 'bcd' from dual union all
         select 'xx' from dual
       )
where  instr(col1,'d',1,1) >= 1
;


select *
from   (
         select 'abcd' col1 from dual union all
         select 'bcd' from dual union all
         select 'xx' from dual
       )
where  col1 like '%d%'
;

 

* 숫자함수

함수 용도 예제
round 지정된 소수점 자리로 값을 반올림. SELECT ROUND(45.923,2)
      ,ROUND(45.923,0)
      ,ROUND(45.923,-1)  
FROM   DUAL
;
trunc 지정된 소수점 자리까지 남기고 값    버리기 SELECT TRUNC(45.923 , 2)
      ,TRUNC(45.923 )
      ,TRUNC(45.923 , -2)  
FROM   DUAL
;
mod 나머지 값 SELECT mod(10,3)
FROM   DUAL
;

 

* 날짜 함수

함수 용도 예제
add_months 날짜에 달 수 더하기,
빼기
select add_months( to_date('20190105','yyyymmdd') ,1 ) from dual;
select add_months( to_date('20190105','yyyymmdd') ,-1 ) from dual;
months_between 두 날짜 간의 달 수 select months_between( col2, col1 )
from   (
         select to_date('20190105','yyyymmdd') col1
              , to_date('20190315','yyyymmdd') col2
         from dual
       )
last_day 해당 달의 마지막 날 select last_day( to_date('20190105','yyyymmdd') )
from   dual
;
next_day 입력일 이후에 해당 요일이
처음 돌아오는 일자
select next_day( to_date('20190101','yyyymmdd'), 1 )
from   dual
;
--> 1(일요일)부터 7(토요일)까지 가능

 

 

반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글