본문 바로가기
공부

[Oracle_SQL] 함수

by KAI_RO 2024. 8. 19.

[ 함수 ]

1.문자함수

1) 대문자 - 소문자 치환

select  upper('a'),                     -- 대문자변환
            lower('A'),                    -- 소문자변환
            initcap('abc def')         -- 첫글자 대문자변환
   from  dual;

2) 길이반환, 크기반환
;
select length('abc'),
           length('가나다'),         -- 문자의 길이
           lengthb('abc'),      
           lengthb('가나다')        -- 문자의 byte
  from  dual;

3) 문자열 추출
※substr(대상, 시작위치, 추출개수)
;
select  substr('abcdefg',3,2),        --  3번째 글자에서 시작하여 2글자를 추출.
            substr('abcdefg',3),          --  3번째 글자에서 시작하여 끝까지 모든 단어 추출(추출개수 생략시 끝까지)
            substr('abcdefg',-2),         -- 뒤에서 2번째 글자에서 시작하여 끝까지 모든 단어 추출
            substr('abcdefg',-4,2)       -- 뒤에서 4번째 글자에서 시작하여 2글자를 추출.
  from    dual;

4) 문자열 위치
※instr(대상, 검색대상, 시작위치, 발견횟수)
;
select  instr('가a나a다a라a마a바a사','a'),         -- 검색대상 'a'의 위치.(가장 처음 등장하는)
            instr('가a나a다a라a마a바a사','a', 3),    -- 검색대상 'a'의 위치. 검색시작위치는 3번째 글자. 
            instr('가a나a다a라a마a바a사','a', 3,2), -- 검색대상 'a'가 두번째로 발견되는 위치. 검색시작위치는 3번째 글자. 
            instr('가a나다라마바a사','a', -5)    -- 시작위치는 뒤에서부터 5번째.  scan방향도 뒤(우측)에서 앞(좌측)으로 scan.
  from dual;

5) 문자열 삽입
※lpad(대상, 크기, 삽입문자) 
※rpad(대상, 크기, 삽입문자) 

select  lpad('abcd',10,'*'),
            lpad('abcd',10,' '),
            rpad('abcd',10,'*'),
            rpad('abcd',10,'-')
  from  dual;

 

6) 문자열 삭제

select ltrim('aabbaa','a'),
           rtrim('aabbaa','a'),
           trim('   a b c   ')
  from  dual;

 

7) 문자열 치환

select  translate('가나가나가가나나가나','나', '다'), 
            replace('가나가나가가나나가나','나'),          
            replace('가나가나가나가나','나','다'),
            replace('가나다라마라다나가','나다라','BCD')
  from  dual;

 

2.숫자함수

 

1) round / trunc

 

select  round(1234.5678, 3),         --  소수점 4번째 자리에서 반올림
            trunc(1234.5678, 3),          --  소수점 4번째 자리에서 버림
           round(1234.5678),               --  소수점  첫째자리 반올림
           trunc(1234.5678),                --  소수점  첫째자리 버림
           round(1234.5678, -2),          --  정수 십의 자리 반올림
           trunc(1234.5678, -2)            --  정수 십의 자리 반올림
  from dual;

 

2) ceil / floor

 

select  ceil(2.5),             -- 3,  대상보다 큰 값 중에 최소 정수(올림)
            floor(2.5)            -- 2,  대상보다 작은 값 중에 최대 정수(버림)
  from   dual;


3) mod                      --mod(숫자1, 숫자2) : 숫자1을 숫자2로 나눈 나머지
select  mod(7,3)
   from dual;

4) abs
select  abs(7), abs(-7), abs(0)                --abs(대상) : 절대값 리턴
   from  dual;

 

3.날짜함수
select sysdate,                                  -- 2024/08/23 17:15:16
          substr(sysdate, 1, 4),              -- 2024
          20||substr(sysdate, 1, 2)          -- 2024
  from dual;

 

  select   * 
    from  scott.emp
 where   hiredate > '1981/12/31'; 

 

'공부' 카테고리의 다른 글

[Linux] Red Hat Enterprise Linux 설치  (0) 2024.08.27
[Oracle_SQL] SQL 기본 문법  (0) 2024.08.19
[파이썬 기초] 파이썬 설치  (0) 2024.04.01