KDT/DB

240105 DB - 단일 행 함수 1

001cloudid 2024. 1. 5. 18:40
728x90
lsnrctl start
sqlplus /nolog
conn sys/패스워드 as sysdba
startup
conn hr/패스워드
show user;

 

단일 행 함수

행당 하나의 결과를 반환

SQL> 함수명(인수)

  1. 문자함수
  2. 숫자함수
  3. 날짜함수
  4. 변환함수
  5. 일반함수

+DBMS마다 자체 함수

 

1. 문자함수

문자 입력을 받아 문자 및 숫자값을 모두 반환할 수 있다.

1) 대,소문자 변환함수

lower('SQL Course');  sql course
upper('SQL Course'); SQL COURSE 
initcap('SQL Course'); Sql Course(첫글자 대문자)

 

그림 1
그림 2

디스플레이+ 조건 찾기로 많이 사용된다.

그림 3

 

2) 문자 조작 함수

  • concat(expr1, expr2) : 두 인수를 연결해서 하나의 문자열로 반환함

그림 4. 좌우 쿼리문은 다르지만 결과는 같다.

concat은 인수가 두 개로만 제한한다.

  • substr(expr1,expr2,expr3) : 문자열에 일부분을 반환함.
    expr1 : 반환할문자열
    expr2 : 시작위치(음수 시작위치를 끝에서부터 찾아옴)
    expr3 : 반환할문자수(생략가능. 생략 시 시작위치로부터 끝까지 반환됨)

그림 5.

  • length('expr') : 문자열 길이를 숫자 값으로 표시함.

그림 6

  • instr(expr1, expr2) : 문자열(expr1)로부터 특정 문자(expr2)의 첫번째 위치를 반환함
    첫번째 공백의 위치를 알때 자주 사용함

그림 7. 찾고자하는 문자가 없다면 0으로 반환함

  • lpad(expr1,expr2,expr3)/rpad(expr1,expr2,expr3) :  오른쪽정렬(lpad)/왼쪽정렬(rpad) 하는 함수
    expr1 : 반환할 문자열
    expr2 : 전체자리수
    expr3: 남는 공간을 채울 문자

그림 8.

  • replace(expr1, expr2, expr3) :  문자열(expr1)에서 특정 문자(expr2)를 다른 문자(expr3)로 교체해서 반환함

그림 9.

  • trim(expr1 from expr2) : 문자열(expr2)가 문자열(expr1)가 접두어나 접미어에 있다면 삭제(절단)해주는 함수

숫자 중에서 01,02,03,...09에서 0을 삭제 즉, 0이나 공백을 제거할 때 유용하게 활용할 수 있다.

 

그림 10. 예제1
그림 11. 예제2

 

2. 숫자함수

  • round(expr1, expr2) : 지정된 소수점 자릿수(expr2) 로 값(expr1)을 반올림함. 즉 expr2까지 반올림

그림 12.

  • trunc(expr1, expr2) : 지정된 소수점 자리수(expr2)로 값(expr1)을 버림함. 즉 expr2까지 남기고 버림해라

그림 13.

  • mod(expr1, expr2) : expr1/expr2 나머지를 반환함

그림 14.

 

 

※DB에서 출력을 하려면 select를 사용한다.

만약 단순 계산결과를 하려면 반드시 from을 써줘야한다.

DBMS에서 내장된 테이블이 有. 그것이 바로 dual이다.

select 계산식 from dual;을 해주면 계산식의 결과가 나온다.(그림 참조)

그림 15. dual 테이블 사용
그림16. dual 테이블

dual 테이블의 소유는 sys이지만, 공용테이블이기 때문에 사용 가능

 

3. 날짜함수

  • sysdate 함수 : 현재 데이터베이스 서버 날짜 및 시간을 반환하는 함수

그림 17.

  • 날짜를 사용한 산술연산이 가능하다.

그림 18.

 

sysdate +,- : 날짜에 일 수를 더하거나 빼기

sysdate - 날짜 : 날짜에서 다른 날짜를 빼기. 결과는 일 수로 반환

sysdate + 숫자/24 : 날짜에서 시간 수를 더함.

 

그림 19.

  • months_betwwen(expr1,expr2) : 두 날짜 간의 월 수

그림 20.

  • add_months(expr1, expr2) : 날짜(expr1)에 월(expr2) 추가해서 반환

그림 21.

  • next_day(expr1, expr2) : 지정된 날짜의 다음날을 반환

그림 22.

  • last_day(expr) : 월의 마지막 날을 반환

그림 23.

날짜에 round와 trunc 함수를 사용할 수 있다.
month 또는 day를 기준으로 반올림,버림을 할지 말지 정한다.

그림 24. 날짜 함수에 round

 

그림 25. 날짜 함수에 trunc

 

그림 26.

 

그림 27

연습문제

연습문제 1
연습문제 2

 

728x90