• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 1. 함수와 연산자 참조
    2. 식 평가 형식 변환
    3. 연산자
    4. 제어 흐름 함수
    5. 문자열 함수
    6. 수치 함수와 연산자
    7. 날짜 및 시간 함수
    8. MySQL에서 사용되는 달력
    9. Full-Text 검색 기능
    10. 캐스트 함수와 연산자
    11. XML 함수
    12. 비트 함수
    13. 암호화 함수와 압축 함수
    14. 정보 함수
    15. 공간 분석 함수
    16. 글로벌 트랜잭션 ID와 함께 사용되는 함수
    17. MySQL Enterprise Encryption 기능
    18. 기타 함수
    19. GROUP BY 절에서 사용되는 함수와 수식
    20. 정밀 계산
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

12.4 제어 흐름 함수

표 12.6 흐름 제어 연산자

이름 설명
CASE CASE 연산자
IF() If / else 구문
IFNULL() Null if / else 구문
NULLIF() expr1 = expr2의 경우 NULL을 반환합니다

  • CASE value WHEN [ compare_value ] THEN result [WHEN [ compare_value ] THEN result ...] [ELSE result ] END

    CASE WHEN [ condition ] THEN result [WHEN [ condition ] THEN result ...] [ELSE result ] END

    첫 번째 버전은 value = compare_value 의 경우 result 가 반환됩니다. 두 번째 버전에서는 true 인 첫 번째 조건의 결과가 반환됩니다. 일치하는 결과 값이 없었던 경우는, ELSE 후 결과를 반환하고 ELSE 부분이없는 경우는 NULL 이 반환됩니다.

     mysql> SELECT CASE 1 WHEN 1 THEN 'one'
         -> WHEN 2 THEN 'two' ELSE 'more' END;
             -> 'one'
     mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
             -> 'true'
     mysql> SELECT CASE BINARY 'B'
         -> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
             -> NULL
    

    CASE 식의 반환 형식은 모든 반환 호환 집약적이지만, 사용되는 문맥에 따라 달라집니다. 문자열의 컨텍스트에서 사용되는 경우, 결과는 문자열로 반환됩니다. 숫자 컨텍스트에서 사용되는 경우는 결과가 10 진수, 실수 또는 정수 값으로 반환됩니다.

    참고

    여기에 표시된 CASE 식의 구문은 저장 프로그램 내부에서 사용하기 위해 섹션 13.6.5.1 "CASE 구문" 에서 설명한 SQL CASE 명령문의 구문은 약간 다릅니다. CASE 명령문은 ELSE NULL 절을 가질 수 없으며, END 가 아니라 END CASE 로 종료합니다.

  • IF( expr1 , expr2 , expr3 )

    expr1 이 TRUE ( expr1 <> 0 및 expr1 <> NULL )의 경우 IF() 는 expr2 를 반환합니다. 그렇지 않으면 expr3 을 반환합니다. IF() 는 사용되는 컨텍스트에 따라 숫자 또는 문자열 값을 반환합니다.

     mysql> SELECT IF(1>2,2,3);
             -> 3
     mysql> SELECT IF(1<2,'yes','no');
             -> 'yes'
     mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
             -> 'no'
    

    expr2 와 expr3 중 하나만이 명시 적으로 NULL 인 경우, IF() 함수의 결과 유형은 비 NULL 식의 형태가됩니다.

    IF() 의 디폴트의 반환 값 (임시 테이블에 저장 될 때 중요 해지는 경우가 있습니다)는 다음과 같이 계산됩니다.

    식 반환 값
    expr2 또는 expr3 문자열을 반환 문자열
    expr2 또는 expr3 은 부동 소수점 값을 반환 부동 소수점
    expr2 또는 expr3 는 정수를 반환 정수

    expr2 와 expr3 모두 문자열에서 두 가지 문자열에서 대소 문자를 구분하는 경우는 결과도 대소 문자를 구분합니다.

    참고

    IF 문도 있지만, 여기에서 설명되는 IF() 함수와는 다릅니다. 섹션 13.6.5.2 "IF 구문" 을 참조하십시오.

  • IFNULL( expr1 , expr2 )

    expr1 이 NULL 이 아니면 IFNULL() 은 expr1 을 반환하고, 그렇지 않으면 expr2 를 반환합니다. IFNULL() 은 사용 된 문맥에 따라 숫자 또는 문자열 값을 반환합니다.

     mysql> SELECT IFNULL(1,0);
             -> 1
     mysql> SELECT IFNULL(NULL,10);
             -> 10
     mysql> SELECT IFNULL(1/0,10);
             -> 10
     mysql> SELECT IFNULL(1/0,'yes');
             -> 'yes'
    

    IFNULL( expr1 , expr2 ) 의 디폴트의 결과 값은 STRING , REAL 또는 INTEGER 의 순서로 두 표현식보다 "일반적인"입니다. 식이나 MySQL이 임시 테이블의 IFNULL() 에서 반환 된 값을 내부에 저장해야하는 위치에 따라 테이블의 대문자와 소문자를 고려하십시오.

     mysql> CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
     mysql> DESCRIBE tmp;
     + ------- + -------------- + ------ + ----- + --------- + --- ---- +
     | Field | Type | Null | Key | Default | Extra |
     + ------- + -------------- + ------ + ----- + --------- + --- ---- +
     | test | varbinary (4) | NO | | | |
     + ------- + -------------- + ------ + ----- + --------- + --- ---- +
    

    이 예제에서는 test 컬럼의 형태는 VARBINARY(4) 입니다.

  • NULLIF( expr1 , expr2 )

    expr1 = expr2 가 true의 경우는 NULL 을 반환하고, 그렇지 않으면 expr1 을 반환합니다. 이것은 CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END 와 같습니다.

     mysql> SELECT NULLIF(1,1);
             -> NULL
     mysql> SELECT NULLIF(1,2);
             -> 1
    
    참고

    인수가 동일하지 않은 경우는 MySQL에서 expr1 이 2 회 평가됩니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved