나만의 작은 도서관

[SQL] 기초 3. 조건문(IF, CASE)과 문자열 함수 본문

Common/MySQL

[SQL] 기초 3. 조건문(IF, CASE)과 문자열 함수

pledge24 2024. 4. 11. 17:07
유의사항: 해당 글은 MySQL 문법을 기반으로 작성된 글입니다. 다른 SQL과 다른 부분이 있을 수 있습니다.

 

개요

하나의 테이블에서 여러 양식으로 결과를 출력하려면 어떻게 해야할까? 매번 양식에 맞도록 테이블 데이터를 바꾼다면 다소 부담스러운 작업 시간이 발생한다. 그렇기 때문에 테이블에 있는 데이터를 바꾸는 게 아닌, 지정된 양식으로 변환한 데이터를 출력하는 것이 적절해 보인다. 이번에는 입력된 데이터를 조건에 따라 값을 바꾸는 기능을 가진 조건문과 문자열 함수들을 알아보자.


조건문

조건문은 입력된 데이터를 조건에 따라 값을 바꾸는 기능을 가진다. SQL에서의 조건문은 많은 프로그래밍 언어에서 그렇듯, IF문과 CASE문이 있다.

 

IF문

 

SQL에서 IF문은 true와 false의 결과 값을 입력값으로 적어준다. 그 이외에 특별한 점은 없다.

IF(조건, true일 때 결과, false일 때 결과)

 

 

CASE문

 

case문은 when절에서 조건을 만족하면 해당 줄에 있는 then으로 이동하고 case문을 끝낸다. 반대로, 조건을 만족하지 않는다면 다음 줄에 있는 when절로 넘어간다. 해당 과정을 반복하다 else절을 만나면 else절 수식을 실행하고 case문을 끝낸다. 자세한 작동과정은 다음과 같다.

 

해당 컬럼이 조건 1을 만족한다면 수식1을 실행, 만족하지 않는다면 조건 2에 만족하는 지 확인.

                    조건 2를 만족한다면 수식2를 실행, 만족하지 않는다면 조건 3에 만족하는 지 확인.

                    ...

                    조건 N을 만족한다면 수식N을 실행, 만족하지 않는다면 수식(N+1)을 실행.

 

CASE 컬럼 WHEN 조건1 THEN (수식1)
          WHEN 조건2 THEN (수식2)
          .
          . 
          WHEN 조건N THEN (수식N)
          ELSE (수식N+1) END

 


문자열 함

 

문자열 함수 예시 

문자열 함수 사용법 예시 설명 예시
replace() replace(컬럼, 현재 문자열, 바꿀 문자열) 컬럼에 있는 모든"aa"를 "bb"로 바꾼다. replace(컬럼, "aa", "bb")
substr() 또는 substring() substr( 컬럼, 시작 위치, 바꿀 글자 수) 컬럼의 2번째부터 5개의 문자를 가져온다.  substr(컬럼, 2, 5)
concat() concat(문자열1, 문자열2, ...) '나는', '밥을', '먹었다' 문자열을 순서대로 합친다 concat('나는', '밥을', '먹었다')

 

문자열 함수 예시 결과

  • replace("baabaa", "aa", "bb") => "bbbbbb"
  • substr("123456789", 2, 5) => "23456"
  • concat('나는', '밥을', '먹었다') =>  '나는밥을먹었다'