본문 바로가기
프로그래밍 공부 정리/database

숫자 관련 오라클 함수

by 메기사랑 2021. 11. 23.

** 숫자와 관련하여 오라클이 미리 만들어 놓은 함수들.
 
 abs(숫자[숫자가 있는 칼럼|숫자가있는 칼럼의 수식])
  ==> 음수이던지 양수이던지 절대값을 반환하는 함수
 

 select abs(-78), abs(78) from dual;
 SQL>  select abs(-78), abs(78) from dual;

  ABS(-78)    ABS(78)
---------- ----------
        78         78


        
       
 
 round(실수값,소수점위치)
==>  실수값을 반올림하여 소수점위치까지 출력하는 함수입니다.
==> 소수점위치가 1이면 소수점 첫번째 자리까지 표시하라는 의미 입니다.
==> 소수점위치가 0이면 소수점 이하 표시하지 말고 정수만 출력하라는 의미입니다.(즉 일의자리까지 표시하라는 의미)
==> 소수점위치가 -1이면 일의자리에서 반올림해서 십의자리까지 표시하라는 의미입니다.

select round(4.875, 1) from dual;
 ROUND(4.875,1)
--------------
           4.9
 
 select round(4.845, 1) from dual;
 ROUND(4.845,1)
--------------
           4.8
           
 select round(4.845,0) from dual;
 
 ROUND(4.845,0)
--------------
             5
             
select round(6469,-1) from dual;             
ROUND(6469,-1)
--------------
          6470
          
 select round(6469,-2) from dual;


 


 ceil(실수값)
  ==> 무조건 올림수를 취한 정수를 반환합니다.
 
 floor(실수값)
  ==> 무조건 버림수를 취한 정수를 반환합니다.
 
 

 select round(56.4791, 0) from dual;
 select ceil(56.4791) from dual;
 
 SQL>  select round(56.4791, 0) from dual;

ROUND(56.4791,0)
----------------
              56

SQL>  select ceil(56.4791) from dual;

CEIL(56.4791)
-------------
           57
           
 ---------------------------------------------------------------------------------
 select round(56.789, 0) from dual;
 select floor(56.789) from dual;
 
 SQL>  select round(56.789, 0) from dual;

ROUND(56.789,0)
---------------
             57

SQL>  select floor(56.789) from dual;

FLOOR(56.789)
-------------
           56



 
 replace(문자열, 원래문자, 바꿀문자)
  ==> 문자열 데이터중에서 특정문자를 다른문자로 변경할 때 사용합니다.
 

ex) 도서제목에 야구가 포함된 도서를 농구로 변경한 후에 도서목록을 출력
 select bookid, replace(bookname, '야구','농구') bookname, publisher, price 
 from book;


 
 
 
 length(문자열) ==> 문자열의 길이를 반환
 lengthb(문자열) ==> 문자열의 바이트길이를 반환
 

 select length('김') from dual;
 select length('a') from dual;
 
 SQL> select length('김') from dual;

LENGTH('김')
------------
           1

SQL>  select length('a') from dual;

LENGTH('A')
-----------
          1
          
          
 select lengthb('김') from dual;
 select lengthb('a') from dual;
 
 SQL>  select lengthb('김') from dual;

LENGTHB('김')
-------------
            3

SQL>  select lengthb('a') from dual;

LENGTHB('A')
------------
           1


 
 substr(문자열,시작위치,글자수)
  ===> 문자열데이터에서 시작위치에서 부터 글자수만큼 잘라옵니다.
 
 

select substr('hello oracle', 3,3) from dual;
 select substr('hello oracle', 3,4) from dual;
 select substr('hello oracle', 3,5) from dual;


 

 instr(문자열,찾을문자)
  ==> 문자열안에서 찾을문자의 위치를 반환합니다.
 

select instr('hello oracle', 'r') from dual;


 
lower(문자열) ==> 문자열을 모두 소문자로 변환해 주는 함수
 upper(문자열)  ==> 문자열을 모두 대문자로 변환해 주는 함수
 

SQL> select lower('HELLO ORACLE') from dual;

LOWER('HELLOORACLE')
------------------------
hello oracle

SQL> select upper('Hello Korea') from dual;

UPPER('HELLOKOREA')
----------------------
HELLO KOREA


 ==> 영문데이터 인 경우 
  대.소문자 구별없이 
  판별해야 하는 경우라면
  모두 대문자로 혹은 모두 소문자로 변환 한 후에 판별합니다.
 

 

 


 ltrim(문자열) ==> 문자열데이터의 왼쪽에 있는 공백을 제거합니다.
 rtrim(문자열) ==> 문자열데이터의 오른쪽에 있는 공백을 제거합니다.
 trim(문자열) ==> 문자열데이터의 왼쪽과 오른쪽에 있는 공백을 제거합니다.
 

select  '*' || '   hello   ' || '*' from dual;
select  '*' || ltrim('   hello   ') || '*' from dual;
select  '*' || rtrim('   hello   ') || '*' from dual;
select  '*' || trim('   hello   ') || '*' from dual;


 

lpad(칼럼, 자릿수, 문자)
==> 컬럼의 값을 자릿수 만큼 잡아서 오른쪽 맞추어 출력하되 왼쪽 빈칸은 문자로 채워서 출력

select lpad('hello', 10, '@') from dual; 
 
 LPAD('HELLO',10,'@')
--------------------
@@@@@hello



rpad(칼럼, 자릿수, 문자)
==> 칼럼의 값을 자릿수 만큼 잡아서 왼쪽에 맞추어 출력하도 오른빈칸은 문자로 채워로 출력

select rpad('hello', 10, '*') from dual;

RPAD('HELLO',10,'*')
--------------------
hello*****