데이터베이스 - 일반함수

함수 -  일반 함수



공백으로 인해 데이터가 날아가 버렸다.


  • nvl()
이를 해결해보자.
이제 null 데이터는 0으로 바뀌었다.

이제 comm값은 null이 아닌 0으로 처리되어 데이터가 null로 날아가지 않도록 하고 있다.


  • nvl2()
nvl() 외에 추가된 null 처리 함수이다. 이는 간단하게 첫 번째 인자부터 순서대로 null값이 없으면 다음 인자값을 출력하도록 하여, null이 출력되지 않도록 한다.

  • coalesce()
null이 아닌 최초의 인자값이 출력 되도록 하는 null처리 함수이다.

  • case()

각 케이스 별로 다르게 값을 출력하도록 하고 있다. 하지만 이 때 코드가 너무 길어 cmd 창에서 작성하기 어렵다.
따라서 sql파일을 별도록 만들어 script로 cmd에서 받아오도록 해보겠다.
이를 sql script라고 한다.

visual studio code로 sql 스크립트를 작성하였다. sql 스크립트의 확장자는 sql이다.


하지만 현재 한글로 되어 있는 급여가 깨져서 출력되고 있다. 따라서 이를 수정해주자.
이는 문자 인코딩 방식으로 인해 발생한 문제이다. 따라서 에디터에서 인코딩 방식을 변경해주어야 한다.
밑에 utf-8을 누르면 창이 하나 뜰 것이다. 여기서 save with encoding 버튼을 클릭하자. 그러면 여러 나라 문자들의 형식으로 인코딩할 수 있는 선택창이 등장한다. 이중 EUC_KR이라는 형식을 선택한다.

그러면 다음처럼 EUC_KR로 변경되어 있을 것이다. 이 상태에서 저장으로 하고 다시 출력해보자.

다음처럼 급여라는 문자가 제대로 출력되고 있다.



우리가 코드를 작성할 때 lower를 when절에서 쓰도록 할 수도 있다.

문제
10번 부서는 20% 인상
20번 부서는 40% 인상
기타 부서는 인상 없음
보여주는 정보 조회

위의 예시에서 일부만 수정해주면 된다. 다음처럼 코드를 작성하고 cmd창에서 확인해보자.

제대로 출력되고 있음을 알 수 있다.

-decode()
case 구문을 함수형식으로 사용할 수 있도록 하는 함수이다. 형식은 case구문과 거의 유사하다.




단일 행 함수들은 함수의 중첩이 가능하다. 이 때 가장 안쪽에 있는 함수들부터 바깥 쪽 함수로 연산된다.

댓글

이 블로그의 인기 게시물

데이터베이스 PL/SQL - 배열과 테이블

데이터베이스 PL/SQL 변수선언

데이터베이스 PL/SQL 제어문 - 반복문