본문 바로가기

Oracle/Oracle SQL

Database SQL_Single-Row Function_일반함수

Step 2. Single-Row Function! 

- Sub : 일반함수

 

SQL은 또 오랜만이네요..ㅎ 사랑니 뽑고나서 귀챠니즘에 빠져서.. 잘 안올린..ㅠ

단일함수의 끝부분이죠! 일반함수입니다. 일반함수는 많이 쓰는 부분이라서 잘 알아두면 편한 그런 함수들입니다!

하나하나 진행해 봅시당 ㅎㅎ

 

첫번째로는 NVL이 되겠습니다. 이 함수는 NULL 값을 만나면 다른 값으로 치환해 주는 함수입니다.

문법자체도 어렵지 않은 함수입니다. NVL(컬럼, 치환값) 이게 끝!

 

형(Type)에 따른 경우가 조금 다르긴한데 이것도 살펴보도록 하겠습니다.

치환값이 숫자일 경우 기본값으로 넣는 것이죠. NVL(SAL, 0) 이면 기본값이 0, NVL(SAL, 100) 이면 기본값이 100

치환값이 문자일 경우 NVL(JOB, '무직') JOB이 NULL이면 무직이라는 것이기 때문에 기본값이 무직

치환값이 날짜일 경우 NVL(hiredate, 'sysdate') 고용일을 오늘로 바꾸는 것!

 

그냥 기본값을 무엇으로 줄지를 고민하는 함수가 되겠습니다 ㅎ

 

 

이처럼 쓰는 거랍니다. 보너스가 null일 경우에는 0으로 기본값주고 출력! 안그러면 출력이 안되겠죠 ㅎ

 

NVL이랑 비슷한것이 NVL2라는 함수가 있습니다. 문법만 약간 다른데요.

NVL2(컬럼, A, B) B라는 것이 하나더 생겼죠? 컬럼이 NULL이 아니면 A, NULL이면 B 라는 조건입니다.

 

NVL을 지나지나 DECODE라는 함수를 보겠습니다. 이 함수는 매우매우 유용하게 쓰입니다.

JAVA나 C를 보면 IF라는 조건문이 나옵니다. JAVA나 C를 안하셨다면 잘 모르실 수 있겠군용ㅎ

A가 B이면 C를 출력하고 B가 아니라면 D를 출력해라 이런식으로 비교하는 것도 가능한 함수라는 겁니다.

DECODE는 유형에 따라서 조금 달라 질 수 있습니다. 그리고 응용함에 따라 달라질 수 있겠구요 ㅎ

예를 들어 제일 기본 문법으로 DECODE(A, B, '1', NULL) A가 B이면 1을 출력하고 아닐경우 NULL을 출력. NULL은 생략가능

이런식인데 한번 봐야겠죠.

 

 

예를 보면 좀더 쉽습니다. deptno 컬럼이 101이면 컴퓨터 공학과를 출력하라는 것이죠. 그렇지 않으면 그냥 null을 주고요.

  

 

이번에는 다른것같지만 같습니다. 위에서 네번째 부분을 생략하면 null이라고 했는데요. null이 아닌 값을 주면 위처럼 나옵니다.

활용도에 따라 다르게 쓰일 수 있는 DECODE이기 때문에 프로그래밍 한다고 생각하면 좋습니다. 엑셀의 IF와도 비슷하구요!

  

 

이처럼 다른 조건을 또 주면 다르게 반응하는 것도 가능하다는 거죠. DECODE(A, B ,'1', C, '2', D, '3') 이처럼요.

이중 DECODE를 쓰는 것도 있는데 그건 자신이 응용하는 것이라 넘어가겠습니다. 애초에 어려운 것이 아니라서요..ㅎ

 

DECODE랑 비슷한 조건문이 또하나가 있는데 CASE라는 함수입니다. CASE의 문법은 약간 더 어렵긴 합니다.

CASE 조건 WHEN 결과1 THEN 출력1 WHEN 결과2 THEN 출력2 ELSE 출력3 END "컬럼명"

약간 복잡복잡하기도 하지만 쓰기에 나쁘진 않습니다.

  

 

이런식으로 CASE로 SUBSTR와 INSTR로 조건을 준 후 비교를 하는 거죵ㅎㅎ 어렵지 않죠?ㅎ 저한테만 그런건지..ㅎ

일반함수는 이렇게 간단히 끝을 내겠습니다. 이렇게 SQL도 Step 2도 끝! 다음 포스팅에서는 이제 복수함수 그룹함수를 들어가겠습니다!

뿅뿅~