본문으로 바로가기

SQL함수 / 단일행 함수

category ORACLE 2019. 11. 15. 15:26

SQL함수


  • 어떠한 일을 수행하는 기능으로써 주어진 인수를 재료로 처리를 하여 그 결과를반환하는 일을 수행한다
  • 입력(INPUT)과 출력(OUTPUT)으로 구성되는데, 
    입력으로 데이터를 설정하면, 함수가 내부적으로 데이터를 가공하여 출력을 통해 반환한다.

 

단일행 함수


  • 모든 row에 대해 각각 적용되어 행의 개수와 동일한 개수를 반환하는 함수
  • SELECT, WHERE, ORDER BY 절에 사용가능

 

문자함수

  • 문자와 관련된 특별한 조작을 위한 함수
  • 테이블 행단위로 처리됨
함수 설명
CHR(아스키 코드)  SELECT CHR(65) FROM DUAL ; 
CONCAT(칼럼명, '붙일문자') 두개의 문자열을 연결하여 반환하는 연결함수
SELECT CONCAT(ename, ' 님' ) name FROM emp ;
INITCAP( '문자열' ) 각 단어의 시작 문자를 대문자로 변환하여 반환한다.
SELECT INITCAP( 'hello world') FROM DUAL;
LOWER( '문자열' )  모든 글자를 소문자로 변환하여 반환한다.
SELECT LOWER( 'HELLO!' ) FROM DUAL;
UPPER( '문자열' ) 모든 글자를 대문자로 변환하여 반환한다.
SELECT UPPER( 'hello!' ) FROM DUAL;
LPAD( '문자열' , 전체 자리수 , '남는자리를 체울 문자') 

오른쪽 정렬 후 왼쪽에 생긴 빈 공백에 특정 문자를 채운다.
SELECT LPAD( 'HI', 10 , '*' ) FROM DUAL;

RPAD( '문자열' , 전체 자리수 , '남는자리를 체울 문자')  왼쪽 정렬 후 오른쪽에 생긴 빈 공백에 특정 문자를 채운다.
SELECT RPAD( 'HELLO', 15 , '^' ) FROM DUAL;
LTRIM( '문자열' , '제거할문자' ) 왼쪽에서 특정 문자를 삭제한다.
SELECT LTRIM( 'ACACBCD' , 'AC' ) FROM DUAL;
RTRIM( '문자열' , '제거할문자') 오른쪽에서 특정 문자를 삭제한다.
SELECT RTRIM( 'ACDDBAC', 'AC') FROM DUAL;
REPLACE( '문자열1' , '문자열2' , '문자열3')  문자열 1에 있는 문자열중 문자열2를 찾아서 문자열3 으로 바꿔준다.
SELECT REPLACE( 'Hello mimi' , 'mimi', 'mama' )  FROM DUAL;
SUBSTR( '문자열' , N1, N2 )  문자열의 N1 번째 위치에서 N2 개만큼 문자열 빼오기
SELECT SUBSTR( 'ABCDEFGHIJ' , 3 , 5) FROM DUAL;
ASCII('문자') 문자에 해당하는 ASCII 코드값을 반환한다.
SELECT ASCII( 'A' ) FROM DUAL;
LENGTH( '문자열' )  문자열의 길이를 반환한다.
SELECT LENGTH( 'ABCDE' ) FROM DUAL;
LEAST( '문자열1', '문자열2' , '문자열3' )
 
문자열 중에서 가장 앞의 값을 리턴한다.
SELECT LEAST( 'AB','ABC','D') FROM DUAL;
NVL(칼럼명 , 값 ) NULL값을 어떤 특정한 값으로 변환하여 반환한다.(문자,날짜 ,수치 데이터)
SELECT ename,NVL(comm, 0)  FROM emp ;
TO_CHAR 시간

 

숫자함수

  • 숫자와 관련된 특별한 조작을 위한 함수
  • 테이블 행단위로 처리됨
함수 설명
ABS(숫자) 숫자의 절대값을 반환한다.
SELECT ABS(-10) FROM DUAL;
CEIL(소수점이 있는 수) 파라미터 값보다 같거나 가장 큰 정수를 반환(올림)
SELECT CEIL(3.1234) FROM DUAL;
FLOOR(소수점이 있는 수) 파라미터 값보다 같거나 가장 작은 정수반환(내림)
SELECT FLOOR(2.888829) FROM DUAL;
ROUND(숫자,자리수) 숫자를 자리수+1 번째 위치에서 반올림한다.
SELECT ROUND(3.22645, 2) FROM DUAL;
MOD(숫자1 , 숫자2) 숫자1을 숫자2로 나눈 나머지를 리턴한다.
SELECT MOD(10,3) FROM DUAL;
TRUNC(숫자1, 자리수)  숫자1의 값을 소주점이하 자리수까지만 나타낸다.  나머지는 잘라낸다.
SELECT TRUNC(12.23532576 , 2) FROM DUAL;

 

날짜 함수

  • 날짜 데이터 타입에 사용하기 위한 함수. 단일 함수
함수  설명
SYSDATE  현재 시간을 리턴한다.
SELECT SYSDATE FROM DUAL;
ADD_MONTHS( 날짜, 더해질월) SELECT ADD_MONTHS(SYSDATE, 10) FROM DUAL;
LAST_DAY(날짜)  해당날짜에 해당하는 달의 마지막 날짜을 반환한다.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
MONTHS_BETWEEN(날짜1, 날짜2)  두 날짜 사이의 월의 수
SELECT empno,MONTHS_BETWEEN(SYSDATE, HIREDATE) 근무개월 FROM emp ;
NEXT_DAY(날짜)  명시된 날짜로 부터 다음 요일에 대한 날짜를 반환
ROUND 날짜를 가장 가까운 연도 또는 월로 반올림하여 반환
TRUNC 날짜를 가장 가까운 연도 또는 월로 절삭하여 반환

 

변환함수

  • 문자 데이터는 숫자(TO_NUMBER), 날짜(TO_CHAR) 데이터로 변환 가능
    (자동으로 변환 가능)
  • 숫자,날짜 데이터는 문자(TO_CHAR)데이터로 변환 가능
  • 숫자-날짜 데이터로는 서로 변환 불가능 
함수 설명
TO_NUMBER('string') 문자데이터를 숫자데이터로 바꿔줌
TO_DATE('string', 'format') 문자데이터를 날짜 데이터로 바꿔줌
TO_CHAR(number|date, 'format') 숫자,날짜 데이터를 문자데이터로 변환 

 

조건함수

함수 설명
DECODE 안배움
CASE 안배움

 

'ORACLE' 카테고리의 다른 글

View(뷰) / Sequence(시퀀스) / SYNONYM(동의어)  (0) 2019.11.15
SQL 함수-그룹함수 / GROUP BY 절 / HAVING절  (0) 2019.11.15
DML / TCL  (0) 2019.11.15
DDL 명령어 / TABLE 객체 / ROWID / ROWNUM  (0) 2019.11.15
Data Base  (0) 2019.11.14