• 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. 연산자
    1. 연산자의 우선 순위
    2. 비교 함수와 연산자
    3. 논리 연산자
    4. 할당 연산자
    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.3.2 비교 함수와 연산자

표 12.3 비교 연산자

이름 설명
BETWEEN ... AND ... 값이 범위 내에 포함되어 있는지 확인합니다
COALESCE() NULL이 아닌 첫 번째 인수를 반환합니다
<=> NULL 안전 등가 연산자
= 등가 (같음) 연산자
>= 이상 (더 많다거나 같음) 연산자
> 오른쪽 부등 (더 많은) 연산자
GREATEST() 최대의 인수를 돌려줍니다
IN() 값이 값 세트에 포함되어 있는지 확인합니다
INTERVAL() 제 1 인수보다 작은 인수의 인덱스를 돌려줍니다
IS NOT NULL NOT NULL 값 테스트
IS NOT boolean에 대해 값을 테스트합니다
IS NULL NULL 값 테스트
IS boolean에 대해 값을 테스트합니다
ISNULL() 인수가 NULL 여부를 테스트합니다
LEAST() 최소의 인수를 돌려줍니다
<= 다음 (보다 작거나 같음) 연산자
< 왼쪽 부등 (더 적은) 연산자
LIKE 단순한 패턴 일치
NOT BETWEEN ... AND ... 값이 범위 내에 포함되어 있는지 확인합니다
!= , <> 비항 (같지 않음) 연산자
NOT IN() 값이 값 세트에 포함되어 있는지 확인합니다
NOT LIKE 단순한 패턴 일치의 부정
STRCMP() 2 개의 문자열을 비교합니다

비교 연산의 결과는 1 ( TRUE ), 0 ( FALSE ), 또는 NULL 값입니다. 이러한 연산은 숫자와 문자열 모두에서 작동합니다. 필요에 따라 문자열은 숫자, 숫자는 문자열로 자동 변환됩니다.

다음의 관계 비교 연산자를 사용하면 스칼라 피연산자뿐만 아니라 행 피연산자도 비교할 수 있습니다.

 => <> = <= <>! =

행 비교의 예는 섹션 13.2.10.5 "행 서브 쿼리" 를 참조하십시오.

이 절의 함수의 일부는 1 ( TRUE ), 0 ( FALSE ), 또는 NULL 이 아닌 값이 반환됩니다. 예를 들어, LEAST() 및 GREATEST() 입니다. 그러나 반환되는 값은 섹션 12.2 "수식 계산에서의 타입 변환" 에서 설명한 규칙에 따라 수행 된 비교 연산에 근거합니다.

CAST() 함수를 사용하면 비교 목적으로 값을 특정 형식으로 변환 할 수 있습니다. CONVERT() 을 사용하면 문자열 값을 다른 문자 집합으로 변환 할 수 있습니다. 섹션 12.10 「캐스트 함수 및 연산자 " 를 참조하십시오.

기본적으로 문자열 비교는 대소 문자를 구분하지 않으며 현재의 문자 세트가 사용됩니다. 디폴트는 latin1 (cp1252 서유럽 어)이며, 영어로도 작동합니다.

  • =

    동일한 :

     mysql> SELECT 1 = 0;
             -> 0
     mysql> SELECT '0' = 0;
             -> 1
     mysql> SELECT '0.0' = 0;
             -> 1
     mysql> SELECT '0.01' = 0;
             -> 0
     mysql> SELECT '.01' = 0.01;
             -> 1
    
  • <=>

    NULL - 안전 등가. 이 연산자는 = 연산자와 같이 등가 비교가 실행되지만 두 피연산자가 NULL 이면 NULL 이 아닌 1 을 반환 피연산자가 NULL 의 경우는 NULL 이 아니고 0 이 반환됩니다.

     mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
             -> 1, 1, 0
     mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
             -> 1, NULL, NULL
    
  • <> , !=

    같지 않음 :

     mysql> SELECT '.01' <> '0.01';
             -> 1
     mysql> SELECT .01 <> '0.01';
             -> 0
     mysql> SELECT 'zapp' <> 'zappp';
             -> 1
    
  • <=

    더 작거나 같으면 :

     mysql> SELECT 0.1 <= 2;
             -> 1
    
  • <

    더 적은 :

     mysql> SELECT 2 < 2;
             -> 0
    
  • >=

    더 많은거나 같음 :

     mysql> SELECT 2 >= 2;
             -> 1
    
  • >

    더 많은 :

     mysql> SELECT 2 > 2;
             -> 0
    
  • IS boolean_value

    boolean_value 을 TRUE , FALSE 또는 UNKNOWN 할 수있는 boolean 값에 대한 값을 테스트합니다.

     mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;
             -> 1, 1, 1
    
  • IS NOT boolean_value

    boolean_value 을 TRUE , FALSE 또는 UNKNOWN 할 수있는 boolean 값에 대한 값을 테스트합니다.

     mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;
             -> 1, 1, 0
    
  • IS NULL

    값이 NULL 여부를 테스트합니다.

     mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;
             -> 0, 0, 1
    

    ODBC 프로그램과의 연계가 제대로 작동하도록 MySQL은 IS NULL 을 사용할 때 다음과 같은 추가 기능이 지원됩니다.

    • sql_auto_is_null 변수가 1로 설정되어있는 경우 자동으로 생성 된 AUTO_INCREMENT 값을 제대로 삽입 문 뒤에 다음과 같은 형식의 문을 발행하면 그 값을 검색 할 수 있습니다.

       SELECT * FROM tbl_name WHERE auto_col IS NULL
      

      문이 행을 반환하는 경우 반환되는 값은 LAST_INSERT_ID() 함수를 호출 한 경우와 동일합니다. 여러 행을 삽입 한 후 반환 등에 대한 자세한 내용은 섹션 12.14 "정보 함수" 를 참조하십시오. AUTO_INCREMENT 값을 제대로 삽입 할 수없는 경우, SELECT 문은 행을 반환하지 않습니다.

      IS NULL 비교를 사용하여 AUTO_INCREMENT 값을 취득하는 동작은 sql_auto_is_null = 0 을 설정하면 비활성화 할 수 있습니다. 섹션 5.1 "서버 시스템 변수" 를 참조하십시오.

      MySQL 5.6에서는 sql_auto_is_null 의 기본값은 0입니다.

    • NOT NULL 로 선언 된 DATE 및 DATETIME 컬럼에서는 다음과 같은 문을 사용하여 특수한 일 '0000-00-00' 을 찾을 수 있습니다.

       SELECT * FROM tbl_name WHERE date_column IS NULL
      

      ODBC에서는 '0000-00-00' 날짜 값을 지원하지 않기 때문에 일부 ODBC 응용 프로그램을 검색 할 때 이것이 필요합니다.

      Obtaining Auto-Increment Values ​​및 Connector / ODBC Connection Parameters 의 FLAG_AUTO_IS_NULL 옵션에 대한 설명을 참조하십시오.

  • IS NOT NULL

    값이 NULL 이 아닌 여부를 테스트합니다.

     mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;
             -> 1, 1, 0
    
  • expr BETWEEN min AND max

    expr 가 min 보다 크거나 같고 expr 가 max 보다 작거나 같으면 BETWEEN 은 1 을 반환하고, 그렇지는 0 을 반환합니다. 모든 인수의 형태가 동일하다면, 이것은 식 ( min <= expr AND expr <= max ) 와 동등합니다. 그렇지 않으면 섹션 12.2 "수식 계산에서의 타입 변환" 에서 설명한 규칙에 따라 형태 변환이 실행되지만, 3 개의 모든 인수에 적용됩니다.

     mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
             -> 1 0
     mysql> SELECT 1 BETWEEN 2 AND 3;
             -> 0
     mysql> SELECT 'b' BETWEEN 'a' AND 'c';
             -> 1
     mysql> SELECT 2 BETWEEN 2 AND '3';
             -> 1
     mysql> SELECT 2 BETWEEN 2 AND 'x-3';
             -> 0
    

    날짜 또는 시간 값과 함께 BETWEEN 을 사용했을 때의 결과를 최적화하려면 CAST() 를 사용하여 명시 적으로 값을 원하는 데이터 형식으로 변환합니다. 예 : DATETIME 을 두 DATE 값과 비교하려면 DATE 값을 DATETIME 값으로 변환합니다. DATE 에 비해 '2001-1-1' 등의 문자열 상수를 사용하는 경우 문자열을 DATE 로 변환합니다.

  • expr NOT BETWEEN min AND max

    이것은 NOT ( expr BETWEEN min AND max ) 와 동일합니다.

  • COALESCE( value ,...)

    목록의 첫 번째 비 NULL 값을 반환합니다. 비 NULL 값이 없으면 NULL 을 반환합니다.

     mysql> SELECT COALESCE(NULL,1);
             -> 1
     mysql> SELECT COALESCE(NULL,NULL,NULL);
             -> NULL
    
  • GREATEST( value1 , value2 ,...)

    2 개 이상의 인수가있는 경우 최대 (최대 값) 인수를 돌려줍니다. 인수는 LEAST() 의 규칙과 동일한 규칙을 사용하여 비교됩니다.

     mysql> SELECT GREATEST(2,0);
             -> 2
     mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
             -> 767.0
     mysql> SELECT GREATEST('B','A','C');
             -> 'C'
    

    인수 중 하나가 NULL 인 경우, GREATEST() 는 NULL 을 반환합니다.

  • expr IN ( value ,...)

    expr 이 IN 목록의 값 중 하나와 동일한 경우는 1 을 반환하고, 그렇지 않으면 0 을 반환합니다. 모든 값이 정수의 경우는 expr 의 형태에 따라 평가되고 정렬됩니다. 그 때 항목의 검색은 바이너리 검색을 사용하여 이루어집니다. 즉, IN 값의 목록이 모두 정수로 구성되어있는 경우, IN 는 매우 빠릅니다. 그렇지 않으면 섹션 12.2 "수식 계산에서의 타입 변환" 에서 설명한 규칙에 따라 형태 변환이 실행되지만, 모든 인수에 적용됩니다.

     mysql> SELECT 2 IN (0,3,5,7);
             -> 0
     mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
             -> 1
    

    인용 된 값 (문자열 등)과 동봉되지 않은 값 (숫자 등)의 비교 규칙이 다르기 때문에 IN 목록에 인용 된 값으로 포위되지 않은 값을 결코 혼동하지 바랍니다. 따라서, 형태를 혼동하면 일관성이없는 결과가 될 가능성이 있습니다. 예를 들어, IN 식을 다음과 같이 묘사하지 마십시오.

     SELECT val1 FROM tbl1 WHERE val1 IN (1,2 'a');
    

    대신 다음과 같이 설명합니다.

     SELECT val1 FROM tbl1 WHERE val1 IN ( '1', '2', 'a');
    

    IN 목록의 값의 수는 max_allowed_packet 값에 의해서만 제한됩니다.

    SQL 표준을 준수하기 위해 좌측의식이 NULL 인 경우뿐만 아니라 목록에 일치가 없거나 목록에있는 표현식 중 하나가 NULL 인 경우에도 IN 은 NULL 을 반환합니다.

    IN() 구문은 특정 타입의 서브 쿼리를 작성할 때에도 사용할 수 있습니다. 섹션 13.2.10.3 "ANY, IN 또는 SOME을 사용한 서브 쿼리" 를 참조하십시오.

  • expr NOT IN ( value ,...)

    이것은 NOT ( expr IN ( value ,...)) 와 동일합니다.

  • ISNULL( expr )

    expr 가 NULL 의 경우, ISNULL() 은 1 을 반환하고, 그렇지 않으면 0 을 반환합니다.

     mysql> SELECT ISNULL(1+1);
             -> 0
     mysql> SELECT ISNULL(1/0);
             -> 1
    

    = 대신 ISNULL() 를 사용하면 값이 NULL 인지 여부를 테스트 할 수 있습니다. ( = 를 사용하여 값을 NULL 과 비교하면 항상 false가 발생할 수 있습니다.)

    ISNULL() 함수는 IS NULL 비교 연산자와 일부 특수한 동작을 공유합니다. IS NULL 에 대한 설명을 참조하십시오.

  • INTERVAL( N , N1 , N2 , N3 ,...)

    N < N1 의 경우는 0 을 돌려 주어, N < N2 등의 경우에는 1 을 반환하고, N 이 NULL 의 경우는 -1 을 돌려줍니다. 모든 인수는 정수로 처리됩니다. 이 함수가 제대로 작동하려면 N1 < N2 < N3 < ... < Nn 으로 할 필요가 있습니다. 이것은 바이너리 검색이 사용되는 것이 이유입니다 (매우 빠르게).

     mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);
             -> 3
     mysql> SELECT INTERVAL(10, 1, 10, 100, 1000);
             -> 2
     mysql> SELECT INTERVAL(22, 23, 30, 44, 200);
             -> 0
    
  • LEAST( value1 , value2 ,...)

    2 개 이상의 인수가있는 경우 최소 (최소) 인수를 돌려줍니다. 인수는 다음 규칙을 사용하여 비교됩니다.

    • 인수가 NULL 이면 결과는 NULL 이됩니다. 비교는 필요 없습니다.

    • 반환 값이 INTEGER 문맥에서 사용되는 경우, 또는 모든 인수가 정수이면 정수로 비교됩니다.

    • 반환 값이 REAL 문맥에서 사용되는 경우, 또는 모든 인수가 실수 인 경우는 실수로 비교됩니다.

    • 인수가 숫자와 문자열이 혼합되어 구성되어있는 경우에는 숫자로 비교됩니다.

    • 인수가 아닌 이진 (문자) 문자열의 경우 비 이진 문자열로 비교됩니다.

    • 다른 모든 경우에는 인수는 이진 문자열로 비교됩니다.

     mysql> SELECT LEAST(2,0);
             -> 0
     mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
             -> 3.0
     mysql> SELECT LEAST('B','A','C');
             -> 'A'
    

    일부 경계선 경우에는 위의 변환 규칙에서 비정상적인 결과가 생성 될 수 있습니다.

     mysql> SELECT CAST(LEAST(3600, 9223372036854775808.0) as SIGNED);
             -> -9223372036854775808
    

    이것은 MySQL이 9223372036854775808.0 정수의 맥락에서 읽을 수 발생합니다. 정수 표현에서 값을 유지하는 데 충분하지 않기 때문에 부호있는 정수에 랩합니다.


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