오라클 함수

조예빈·2024년 4월 2일
0

Oracle

목록 보기
2/26
post-thumbnail
post-custom-banner
  • 오라클 함수 : 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어
  • 오라클 함수 종류 : 내장함수, 사용자 정의 함수

문자 함수

  • 문자 데이터를 가공
    |함수|설명|
    |UPPER(문자열)|괄호 안 문자 데이터를 모두 대문자로 변환하여 반환|
    |LOWER(문자열)|괄호 안 문자 데이터를 모두 소문자로 변환하여 반환|
    |INITCAP(문자열)|괄호 안 문자 데이터 중 첫 글자는 대문자로, 나머지 문자를 소문자로 변환 후 반환|
  • 사용 목적 : 사용자가 입력한 값이 서버로 전달된 후, 대소문자가 섞여있는 문자이거나 반대로 검색을 해도 나타날 수 있도록 하기 위함(소문자로 검색해도 대문자가 나오게)
//사원 이름에 SCOTT 단어가 포함된 데이터 찾기
SELECT *
	FROM EMP
WHERE UPPER(ENAME) LIKE UPPER('%scott%');

LENGTH 함수

  • 문자열의 길이를 구함
  • 숫자 비교도 가능함
  • LENGHB함수 : 문자열 데이터 길이가 아닌 바이트 수를 반환
    |실행문|실행결과|
    |LENGTH('한글')|LENGTHB('한글')|
    |2(문자열 길이)|6(문자열 바이트 수)|

SUBSTR 함수

  • 문자열 일부를 추출
    |함수|설명|
    |SUBSTR(문자열 데이터, 시작 위치, 추출 길이)|시작 위치부터 추출 길이만큼 추출. 시작 위치가 음수인 경우에는 뒤에서부터 시작|
    |SUBSTR(문자열 데이터, 시작 위치)|시작 위치부터 끝까지 추출. 시작 위치가 음수면 뒤에서부터 시작|
SELECT JOB, SUBSTR(JOB, 1, 2), SUBSTR(JOB, 3, 2), SUBSTR(JOB, 5)
	FROM EMP;

  • 다른 함수의 결과 값을 SUBSTR 함수의 입력 값으로 사용할 수 있음
//SUBSTR 함수 안에 다른 함수(LENGTH) 함께 사용하기
SELECT JOB,
	SUBSTR(JOB, -LENGTH(JOB)), //문자열의 뒤에서부터 앞까지 반복
    SUBSTR(JOB, -LENGTH(JOB), 2), //뒤에서부터 JOB의 LENGTH까지의 길이만큼 간 후 거기서 시작하여 2개 추출
    SUBSTR(JOB, -3) //뒤에서부터 3개 추출
FROM EMP;

INSTR 함수

  • 문자열 데이터 안에서 특정 문자 위치를 찾는 함수
  • 총 네 개의 입력 값 지정 가능

    INSTR([대상 문자열 데이터(필수)],
    [위치를 찾으려는 부분 문자(필수)],
    [위치 찾기를 시작할 대상 문자열 데이터 위치(선택, default 1)],
    [시작 위치에서 찾으려는 문자가 몇 번째인지 지정(선택, default 1)])

SELECT INSTR('HELLO, ORACLE!', 'L') AS INSTR_1,
	   INSTR('HELLO, ORACLE!', 'L', 5) AS INSTR_2,
       INSTR('HELLO, ORACLE!', 'L', 2, 2) AS INSTR_3
FROM DUAL;

REPLACE 함수

  • 특정 문자를 다른 문자로 바꾸는 함수

REPLACE([문자열 데이터 또는 열 이름(필수)], [찾는 문자(필수)], [대체할 문자(선택)])

SELECT '010-1234-5678' AS REPLACE_BEFORE,
	REPLACE('010-1234-5678', '-', ' ') AS REPLACE_1,
    REPLACE('010-1234-5678', '-') AS REPLACE_2
FROM DUAL;

LPAD, RPAD 함수

  • 각각 Left Padding, Right Padding을 의미
  • 데이터와 자릿수를 지정한 후 데이터 길이가 지정한 자릿수보다 작을 경우 나머지 공간을 특정 문자로 채우는 함수
  • LPAD는 남은 공간을 왼쪽에 채우고 RPAD는 오른쪽에 채움

LPAD([문자열 데이터 또는 열이름(필수)], [데이터의 자릿수(필수)], [빈 공간에 채울 문자(선택)])

RPAD([문자열 데이터 또는 열이름(필수)], [데이터의 자릿수(필수)], [빈 공간에 채울 문자(선택)])

CONCAT 함수

  • 두 개의 문자열 데이터를 하나의 데이터로 연결해 주는 역할
  • 세 개는 합칠 수 없음 -> 오라클은 안되고 MySQL은 가능
  • ||을 써도 문자열이 결합됨
SELECT CONCAT(EMPNO, ENAME),
	   CONCAT(EMPNO, CONCAT(' : ', ENAME))
       //EMPNO || ' : ' || ENAME 이라고 작성해도 가능
FROM EMP
WHERE ENAME = 'SCOTT';

TO_CHAR 함수

  • 날짜, 숫자 데이터를 문자 데이터로 변환해주는 함수
  • 주로 날짜 데이터에서 문자 데이터로 변환하는 데 많이 사용

TO_CHAR([날짜데이터(필수)], '[출력되길 원하는 문자 형태(필수)]')

시간 형식 지정하여 출력하기

|형식|설명|
|HH24|24시간으로 표현한 시간|
|HH,HH12|12시간으로 표현한 시간|
|MI|분|
|SS|초|
|AM, PM, A.M., P.M.|오전, 오후 표시|

SELECT SYSDATE,
	TO_CHAR(SYSDATE, 'HH24:MI:SS') AS HH24MISS,
    TO_CHAR(SYSDATE, 'HH12:MI:SS AM') AS HHMISS_AM,
    TO_CHAR(SYSDATE, 'HH:MI:SS P.M.') AS HHMISS_PM
FROM DUAL;

TO_DATE 함수

  • 문자 데이터를 날짜 데이터로 변환

    TO_DATE('[문자열 데이터(필수)]', '[인식될 날짜형태(필수)]')

SELECT TO_DATE('2018-07-14', 'YYYY-MM-DD') AS TODATE1,
	   TO_DATE('20180714', 'YYYY-MM-DD') AS TODATE2
FROM DUAL;

NULL 처리 함수

  • 특정 열의 데이터가 NULL일 경우 연산 수행을 위해 NULL이 아닌 다른 값으로 대체 해 주어야 해서 사용

NVL 함수

NVL([NULL인지 여부를 검사할 데이터 또는 열(필수))], 앞의 데이터가 NULL일 경우 반환할 데이터)

  • 첫 번째 입력 데이터가 NULL이 아니면 그 데이터를 그대로 반환하고, NULL이면 두 번째 입력 데이터에 지정한 값 반환
SELECT EMPNO, ENAME, SAL, COMM, SAL+COMM,
	NVL(COMM, 0),
    SAL+NVL(COMM, 0)
FROM EMP;

NVL2 함수

  • 데이터가 NULL이 아닐 때 반환할 데이터를 추가로 지정

    NVL2([NULL인지 여부를 검사할 데이터 또는 열(필수)],
    [앞 데이터가 NULL이 아닐 경우 반환할 데이터 또는 계산식(필수)],
    [앞 데이터가 NULL일 경우 반환할 데이터 또는 계산식(필수)])

    SELECT EMPNO, ENAME, COMM,
    	NVL2(COMM, '0', 'X'),
       NVL2(COMM, SAL*12+COMM, SAL*12) AS ANNSAL
    FROM EMP;
![](https://velog.velcdn.com/images/y_bin/post/2478275a-6b09-43b1-a32b-cc45aa5af73f/image.png)

### DECODE 함수
- 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수
- 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보냄
> DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과],
		 [조건1], [데이터가 조건 1과 일치할 때 반환할 결과],
         ...
         [조건n], [데이터가 조건 n과 일치할 때 반환할 결과],
         [위 조건 1~조건 n과 일치한 경우가 없을 때 반환할 결과])
         
         
### 데이터
0차원 : 스칼라(값이 하나)
1차원 : 벡트
2차원 : 행렬
3차원 이상 : 텐서
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글