[22.12.22] 43일차 [데이터베이스] 단일행 함수(문자함수, 숫자함수, 날짜함수, 변환함수)

W·2022년 12월 22일
0

국비

목록 보기
61/119

단일 행 함수

  1. 문자 함수
  • 대소문자 변환함수

    • LOWER 소문자로
    • UPPER 대문자로
    • INITCAP 단어의 첫글자만 대문자로
  • 문자 조작함수

    • CONCAT(expr1,expr2)
      (==) || (연결연산자, 2개 이상 연결가능)
      두 인수를 연결해주는 함수
      mysql은 concat 함수도 2개 이상 가능

    • SUBSTR(expr1, expr2, expr3)
      문자열의 일부분을 반환해주는 함수
      - expr1 : 반환할 문자열
      - expr2 : 시작위치 (음수 : 시작위치를 끝에서부터 찾아옴)
      - expr3 : 반환할 문자수(생략가능 : 시작위치에서 끝까지 반환함.)
      ex) substr(주민번호, 1, 6) => 910523
      ex) substr('Kochhar', -3, 2) => ha

    • LENGTH(expr1)
      문자열의 길이를 반환해주는 함수

    • INSTR(expr1, expr2)
      문자열(expr1)로부터 특정 문자(expr2)의 첫번째 위치값을 반환해주는 함수
      ex) instr('HelloWorld','o') => 5

    • LPAD(expr1, expr2, expr3)
      오른쪽 정렬을 해주는 함수
      - expr1 : 반환할 문자열
      - expr2 : 전체 자리수
      - expr3 : 남는 공간을 채울 문자

    • RPAD(expr1, expr2, expr3)
      왼쪽 정렬을 해주는 함수
      - expr1 : 반환할 문자열
      - expr2 : 전체 자리수
      - expr3 : 남는 공간을 채울 문자

    • REPLACE(expr1, expr2, expr3)
      문자열(expr1)로부터 특정 문자(expr2)를 다른 문자(expr3)으로 교체해주는 함수

    • TRIM(expr1 from expr2)
      문자열(expr2)로부터 특정문자(expr1)가 접두어/접미어에 있다면 삭제(절단)해주는 함수
      ex) trim('H' from 'HHelloWHorHldHHH') => 출력 : elloWHorHld

예제


  1. 숫자 함수
    - Oracle에서는 from 절이 없으면 결과 보여지지 않음. 단순 함수 및 계산 결과 볼 때 from 절에, 있는 테이블을 입력해야 함
    - 하나의 열과 하나의 값이 있는 테이블을 사용
DUAL 테이블
- SYS 소유
- 함수 및 계산 결과를 볼 때 사용하는 공용 테이블
- DUMMY라는 하나의 열과 값이 X인 하나의 행을 포함
- SQL> desc dual 
- SQL> select * from dual

  • ROUND 반올림

  • TRUNC 버림

  • MOD 나머지

  1. 날짜 함수
  • sysdate 오늘 날짜 및 시간 반환
    기본포맷 'DD-MON-RR'만 보여줌

  • 날짜 연산

    • 날짜 + 숫자

    • 날짜 - 숫자

    • 날짜 - 날짜
      ** 근무한 주수 구하기

    • 날짜 + 숫자/24 : 날짜에 시간수 더함

  • 날짜 조작 함수

    • MONTH_BETWEEN 두 날짜 간의 월 수

    • ADD_MONTHS 날짜에 월 추가

    • NEXT_DAY(날짜, 요일) 다음 요일 날짜

    • LAST_DAY 그 달의 마지막날

    • ROUND 날짜 반올림

      • ROUND(SYSDATE,'MONTH') 15일기준
      • ROUND(SYSDATE,'YEAR') 6월기준
    • TRUNC 날짜 절단
      - TRUNC(SYSDATE,'MONTH')
      - TRUNC(SYSDATE,'YEAR')

  1. 변환 함수
  • TO_CHAR

    • DATE → CHAR
      TO_CHAR(date, 'format_model')

      요소결과
      YYYY숫자로 된 전체 연도
      YY, RR숫자로 된 2자리 연도
      YEAR영어 철자로 표기된 연도
      MM월의 2자리 값
      MONTH전체 월 이름
      MON월의 3자 약어
      DY3문자로 된 요일 약어
      DAY요일의 전체 이름
      DD숫자 형식의 월간 일

      - 숫자형식은 대소문자 구분X, 문자는 대소문자 구분함
      ex) MON : DEC, Mon : Dec, mon : dec
      - 시간 요소 날짜에서 시간 부분의 형식 지정
      HH24:MI:SS AM -> 15:45:32 PM
      - 접미어 sp, spth 숫자를 영어 철자로 표기
      ddspth -> fourteenth
      - 문자열은 큰따옴표로 묶어 추가
      DD "of" MONTH -> 12 of OCTOBER
      - 접두어 fm 선행하는 공백, 0을 제거하는 요소
      fmDD -> 01이면 1로 출력됨

    • NUMBER → CHAR
      TO_CHAR(number, 'format_model')

      요소결과
      9숫자를 나타냄
      00이 표시되도록 강제 적용
      $부동 달러 기호 배치
      L부동 로컬 통화 기호 사용
      .소수점 출력
      ,천단위 표시자로 쉼표 출력


      자리수 모자라면 ### 으로 표시됨

  • TO_NUMBER

  • TO_DATE

  1. 일반 함수

Oracle DBMS 기준 SQL에 큰따옴표("")가 사용되는 경우

  1. 컬럼명 [AS] "Alias"
    대소문자 구문, 공백 포함, 특수문자 포함(_,#,$ 제외)
  2. to_char(sysdate,'YYYY-MM-DD "Time" HH24:MI')
    사용자형식 내 문자열 포함 시

0개의 댓글