[13, 14, 15강] 문자열 연산, 날짜 연산, CASE문

신은지·2021년 10월 24일
0

SQL 첫걸음

목록 보기
11/14

문자열 데이터 연산

  • 문자열 결합 : 2개의 열 데이터를 모아 1개의 열로 처리하는 등, 문자열 가공

    수치형 데이터도 문자열 결합을 사용할 수 있으며, 문자열로 결합한 결과는 문자열형이 된다.

    (1) SQL Server : + 연산자
    (2) Oracle, DB2, PostgreSQL : || 연산자
    (3) MySQL : CONCAT 함수

  • SUBSTRING 함수
    : 문자열의 일부분을 계산해서 반환하는 함수
    : 문자열 데이터에서 원하는 부분을 각각 추출하고 싶을 때 사용
    : DBMS에 따라 SUBSTR로 쓰는 경우도 있다

  • TRIM 함수
    : 문자열의 앞뒤로 여분의 스페이스가 있을 때 제거
    : 문자열 도중에 있는 스페이스에 적용 X
    : 고정길이 문자열형에서 많이 사용하며, 인수를 지정하여 스페이스 이외의 문자도 제거 가능

  • CHARACTER_LENGTH 함수
    : 문자열의 길이를 계산하여 반환하는 함수
    : CHAR_LENGTH로 줄여서 사용 가능

    • OCTET_LENGTH 함수
      : 문자열의 길이를 바이트 단위로 계산하여 반환하는 함수
      : 문자세트(인코드 방식)에 따라 결과 달라질 수 있다!

문자세트

데이터베이스나 테이블을 정의할 때 사용하는 인코드 방식

  • 반각문자 : 알파벳, 숫자, 기호 등 ASCII 문자
  • 전각문자 : 한글 등. EUC-KR, UTF-8 등의 인코드 방식 사용

날짜 연산

날짜 데이터의 연산 결과는 아래 두 가지 종류로 반환될 수 있다.
(1) 동일한 날짜시간 유형의 데이터
(2) 기간형(interval) 데이터

  • CURRENT_TIMESTAMP
    : 인수가 없는 함수로, 함수 실행했을 때의 시간을 표시한다.
    : 표준 SQL 함수

  • 날짜 데이터의 서식
    : DBMS마다 날짜 데이터의 서식을 지정 & 변경할 수 있는 다양한 함수가 있다.
    : Oracle의 경우 TO_DATE, TO_CHAR 함수 등을 사용한다.

  • 날짜 데이터의 연산
    : 날짜시간형 데이터는 기간형 수치 데이터와 덧셈 및 뺄셈을 할 수 있다.
    : MySQL의 경우, 기간 뺄셈은 DATEDIFF 함수를 이용할 수 있다.


CASE 문으로 데이터 변환하기

임의의 조건에 따라 독자적으로 데이터를 변환하고 싶은 경우 CASE문을 사용한다.

  • CASE문은 SELECT, WHERE, ORDER BY 등 어디서든 사용될 수 있다
  • ELSE를 생략하면 ELSE NULL이 되는 것에 주의한다 = 생략하지 말고 지정하는 것 권장

검색 CASE문

CASE WHEN 조건식 1 THEN 식 1
[WHEN 조건식 2 THEN 식 2]
[ELSE 식3]
END
  • ELSE는 생략 가능 : 생략할 경우 ELSE NULL로 간주

  • 만약 NULL값을 변환하고 싶다면, COALESCE 함수 사용이 간편

    COALESCE(a, 0)

    : (a == null) ? 0 : a


단순 CASE문

NULL 판정에서 = 연산자를 사용할 수 없기 때문에 단순 CASE문에서 NULL 값을 비교할 수 없다!
NULL값 비교는 검색 CASE문 사용하기

CASE 식1
WHEN 식2 THEN 식3
[WHEN 식4 THEN 식5]
[ELSE 식6]
END
  • 식1과 식4의 값을 비교하여 같다면 식5를 반환하는 형식
  • 일치하는 WHEN절이 하나도 없다면 ELSE절 반환
profile
호그와트 장학생

0개의 댓글