• 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. 수치 함수와 연산자
    1. 산술 연산자
    2. 수학 함수
    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.6.2 수학 함수

표 12.12 수학 함수

이름 설명
ABS () 절대 값을 반환합니다
ACOS () 아크 코사인
ASIN () 아크 사인을 반환합니다
ATAN2() , ATAN() 2 개의 인수의 아크 탄젠트
ATAN () 아크 탄젠트
CEIL () 인수 이상의 가장 작은 정수 치를 돌려줍니다
CEILING () 인수 이상의 가장 작은 정수 치를 돌려줍니다
CONV () 수치를 다른 기수 간 변환합니다
COS () 코사인
COT () 코탄젠트를 돌려줍니다
CRC32 () 순환 중복 검사 값을 계산합니다
DEGREES () 라디안을 각도로 변환합니다
EXP () 거듭 제곱됩니다
FLOOR () 인수 이하의 가장 큰 정수를 반환합니다
LN () 인수의 자연 로그를 반환합니다
LOG10 () 인수의 바닥 10의 로그를 반환합니다
LOG2 () 인수의 바닥 2의 로그를 반환합니다
LOG () 첫 번째 인수의 자연 로그를 반환합니다
MOD () 나머지를 반환합니다
PI () pi의 값을 돌려줍니다
POW () 지정된 지수로 거듭 제곱 된 인수를 돌려줍니다
POWER () 지정된 지수로 거듭 제곱 된 인수를 돌려줍니다
RADIANS () 라디안으로 변환 된 인수를 돌려줍니다
RAND () 임의의 부동 소수점 값을 반환합니다
ROUND () 인수를 반올림합니다
SIGN () 인수의 부호를 반환합니다
SIN () 인수의 사인을 반환합니다
SQRT () 인수의 제곱근을 반환합니다
TAN () 인수의 탄젠트
TRUNCATE () 지정된 소수점 이하 자릿수로 자릅니다

모든 수학 함수는 오류 발생시 NULL 을 반환합니다.

  • ABS ( X )

    X 의 절대 값을 반환합니다.

     mysql> SELECT ABS(2);
             -> 2
     mysql> SELECT ABS(-32);
             -> 32
    

    이 함수는 BIGINT 값에서도 안전하게 사용할 수 있습니다.

  • ACOS ( X )

    X 의 아크 코사인 (즉, 코사인이 X 인 값)을 반환합니다. X 가 -1 에서 1 까지의 범위 내에없는 경우는 NULL 를 돌려줍니다.

     mysql> SELECT ACOS(1);
             -> 0
     mysql> SELECT ACOS(1.0001);
             -> NULL
     mysql> SELECT ACOS(0);
             -> 1.5707963267949
    
  • ASIN ( X )

    X 의 아크 싸인 (즉, 싸인이 X 인 값)을 반환합니다. X 가 -1 에서 1 까지의 범위 내에없는 경우는 NULL 를 돌려줍니다.

    mysql> SELECT ASIN(0.2);
            -> 0.20135792079033
    mysql> SELECT ASIN('foo');
    
    +-------------+
    | ASIN('foo') |
    +-------------+
    |           0 |
    +-------------+
    1 row in set, 1 warning (0.00 sec)
    
    mysql> SHOW WARNINGS;
    +---------+------+-----------------------------------------+
    | Level   | Code | Message                                 |
    +---------+------+-----------------------------------------+
    | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' |
    +---------+------+-----------------------------------------+
    
  • ATAN ( X )

    X 의 아크 탄젠트 (즉, 탄젠트가 X 인 값)을 반환합니다.

     mysql> SELECT ATAN(2);
             -> 1.1071487177941
     mysql> SELECT ATAN(-2);
             -> -1.1071487177941
    
  • ATAN( Y , X ) , ATAN2( Y , X )

    두 변수 X 와 Y 의 아크 탄젠트를 반환합니다. 이것은 두 인수의 부호는 결과 사분면의 판정에 사용되는 점을 제외하고 Y / X 의 아크 탄젠트의 계산과 유사합니다.

     mysql> SELECT ATAN(-2,2);
             -> -0.78539816339745
     mysql> SELECT ATAN2(PI(),0);
             -> 1.5707963267949
    
  • CEIL ( X )

    CEIL() 는 CEILING() 의 동의어입니다.

  • CEILING ( X )

    X 이상에서 최소의 정수 값을 반환합니다.

     mysql> SELECT CEILING(1.23);
             -> 2
     mysql> SELECT CEILING(-1.23);
             -> -1
    

    인수가 정확한 값 수치의 경우, 반환 값의 형태도 엄격 값 수치입니다. 인수가 문자열 또는 부동 소수점의 경우 반환 형식이 부동 소수점입니다.

  • CONV ( N , from_base , to_base )

    수치를 다른 기수 간 변환합니다. 기수 from_base 에서 기수 to_base 로 변환 된 숫자 N 의 문자열 표현을 반환합니다. 인수 중 하나가 NULL 인 경우 NULL 을 반환합니다. 인수 N 은 정수로 해석되지만, 정수 또는 문자열로 지정 될 수 있습니다. 최소 기수는 2 에서 최대베이스는 36 입니다. to_base 가 음수 인 경우, N 은 부호화 된 숫자로 간주됩니다. 그렇지 않으면, N 은 부호없는 것으로 간주됩니다. CONV() 는 64 비트 정밀도로 작동합니다.

     mysql> SELECT CONV('a',16,2);
             -> '1010'
     mysql> SELECT CONV('6E',18,8);
             -> '172'
     mysql> SELECT CONV(-17,10,-18);
             -> '-H'
     mysql> SELECT CONV(10+'10'+'10'+0xa,10,10);
             -> '40'
    
  • COS ( X )

    X 의 코사인을 반환합니다. X 는 라디안으로 지정됩니다.

     mysql> SELECT COS(PI());
             -> -1
    
  • COT ( X )

    X 의 코탄젠트를 돌려줍니다.

     mysql> SELECT COT(12);
             -> -1.5726734063977
     mysql> SELECT COT(0);
             -> NULL
    
  • CRC32 ( expr )

    순환 중복 검사 값을 계산하고 32 비트 값의 부호없는 값을 반환합니다. 인수가 NULL 이면 결과도 NULL 입니다. 인수는 문자열로 간주됩니다 (가능한 경우) 캐릭터 라인이 아닌 경우 문자열로 처리됩니다.

     mysql> SELECT CRC32('MySQL');
             -> 3259397556
     mysql> SELECT CRC32('mysql');
             -> 2501908538
    
  • DEGREES ( X )

    라디안에서 학위로 변환 된 인수 X 를 리턴합니다.

     mysql> SELECT DEGREES(PI());
             -> 180
     mysql> SELECT DEGREES(PI() / 2);
             -> 90
    
  • EXP ( X )

    e (자연 로그의 밑)의 X 제곱 값을 반환합니다. 이 함수의 반대는 (하나의 인수 만 사용) LOG() 또는 LN() 입니다.

     mysql> SELECT EXP(2);
             -> 7.3890560989307
     mysql> SELECT EXP(-2);
             -> 0.13533528323661
     mysql> SELECT EXP(0);
             -> 1
    
  • FLOOR ( X )

    X 이하로 최대의 정수 값을 반환합니다.

     mysql> SELECT FLOOR(1.23);
             -> 1
     mysql> SELECT FLOOR(-1.23);
             -> -2
    

    인수가 정확한 값 수치의 경우, 반환 값의 형태도 엄격 값 수치입니다. 인수가 문자열 또는 부동 소수점의 경우 반환 형식이 부동 소수점입니다.

  • FORMAT ( X , D )

    숫자 X 를 '#,###,###.##' 과 같은 형식으로 변환하고 소수점 D 정도 반올림하여 그 결과를 문자열로 반환합니다. 자세한 내용은 섹션 12.5 "문자열 함수" 를 참조하십시오.

  • HEX (N_or_S)

    이 함수를 사용하면 10 진수 또는 문자열의 16 진수 표현을 얻을 수 있습니다. 그 방법은 인수의 형태에 따라 다릅니다. 자세한 내용은 섹션 12.5 "문자열 함수" 에서이 함수의 설명을 참조하십시오.

  • LN ( X )

    X 의 자연 로그 (즉, X 의 바닥 e의 대수)을 반환합니다. X 가 0 이하인 경우는 NULL 이 반환됩니다.

     mysql> SELECT LN(2);
             -> 0.69314718055995
     mysql> SELECT LN(-2);
             -> NULL
    

    이 함수는 LOG( X ) 의 동의어입니다. 이 함수의 반대는 EXP() 함수입니다.

  • LOG( X ) , LOG( B , X )

    하나의 파라미터로 호출되는 경우,이 함수는 X 의 자연 로그를 반환합니다. X 가 0 이하인 경우는 NULL 이 반환됩니다.

    이 함수 (단일 인수로 불려 갔을 경우)의 반대는 EXP() 함수입니다.

     mysql> SELECT LOG(2);
             -> 0.69314718055995
     mysql> SELECT LOG(-2);
             -> NULL
    

    이 함수는 2 개의 매개 변수로 호출되는 경우는 B 를 바닥으로하는 X 의 로그를 반환합니다. X 가 0 이하인 경우 또는 B 가 1 이하인 경우는 NULL 이 반환됩니다.

     mysql> SELECT LOG(2,65536);
             -> 16
     mysql> SELECT LOG(10,100);
             -> 2
     mysql> SELECT LOG(1,100);
             -> NULL
    

    LOG( B , X ) 는 LOG( X ) / LOG( B ) 와 동등합니다.

  • LOG2 ( X )

    X 의 바닥 2의 로그를 반환합니다.

     mysql> SELECT LOG2(65536);
             -> 16
     mysql> SELECT LOG2(-100);
             -> NULL
    

    LOG2() 는 저장에 필요한 비트 수를 결정하는 데 도움이됩니다. 이 함수는 식 LOG( X ) / LOG(2) 와 동일합니다.

  • LOG10 ( X )

    X 의 바닥 10의 로그를 반환합니다.

     mysql> SELECT LOG10(2);
             -> 0.30102999566398
     mysql> SELECT LOG10(100);
             -> 2
     mysql> SELECT LOG10(-100);
             -> NULL
    

    LOG10( X ) 는 LOG(10, X ) 와 동등합니다.

  • MOD( N , M ) , N % M , N MOD M

    모듈로 연산. M 으로 나눈 N 의 나머지를 반환합니다.

     mysql> SELECT MOD(234, 10);
             -> 4
     mysql> SELECT 253 % 7;
             -> 1
     mysql> SELECT MOD(29,9);
             -> 2
     mysql> SELECT 29 MOD 9;
             -> 2
    

    이 함수는 BIGINT 값에서도 안전하게 사용할 수 있습니다.

    MOD() 는 소수 부분을 가지는 값으로도 기능하고 나누기 후 정확한 나머지를 반환합니다.

     mysql> SELECT MOD(34.5,3);
             -> 1.5
    

    MOD( N ,0) 은 NULL 을 반환합니다.

  • PI ()

    π (pi) 값을 반환합니다. 표시되는 기본 소수점 이하의 자리수는 7이지만, MySQL은 내부적으로 전체 배정 밀도 값이 사용됩니다.

     mysql> SELECT PI();
             -> 3.141593
     mysql> SELECT PI()+0.000000000000000000;
             -> 3.141592653589793116
    
  • POW ( X , Y )

    X 의 Y 승 값을 반환합니다.

     mysql> SELECT POW(2,2);
             -> 4
     mysql> SELECT POW(2,-2);
             -> 0.25
    
  • POWER ( X , Y )

    이것은 POW() 의 동의어입니다.

  • RADIANS ( X )

    학위를 라디안으로 변환 된 인수 X 를 리턴합니다.

    참고

    π 라디안은 180 학위와 동등합니다.

     mysql> SELECT RADIANS(90);
             -> 1.5707963267949
    
  • RAND() , RAND( N )

    0 <= v < 1.0 의 범위 내에서 임의의 부동 소수점 값 v 를 반환합니다. 상수 정수 인수 N 이 지정되어있는 경우, 컬럼 값의 반복적 인 시퀀스를 생성하는 시드 값으로 사용됩니다. 다음 예제에서는 RAND(3) 에서 생성 된 값의 순서가 발생한 두 곳에서 동일합니다.

    mysql> CREATE TABLE t (i INT);
    Query OK, 0 rows affected (0.42 sec)
    
    mysql> INSERT INTO t VALUES(1),(2),(3);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> SELECT i, RAND() FROM t;
    +------+------------------+
    | i    | RAND()           |
    +------+------------------+
    |    1 | 0.61914388706828 |
    |    2 | 0.93845168309142 |
    |    3 | 0.83482678498591 |
    +------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT i, RAND(3) FROM t;
    +------+------------------+
    | i    | RAND(3)          |
    +------+------------------+
    |    1 | 0.90576975597606 |
    |    2 | 0.37307905813035 |
    |    3 | 0.14808605345719 |
    +------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT i, RAND() FROM t;
    +------+------------------+
    | i    | RAND()           |
    +------+------------------+
    |    1 | 0.35877890638893 |
    |    2 | 0.28941420772058 |
    |    3 | 0.37073435016976 |
    +------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT i, RAND(3) FROM t;
    +------+------------------+
    | i    | RAND(3)          |
    +------+------------------+
    |    1 | 0.90576975597606 |
    |    2 | 0.37307905813035 |
    |    3 | 0.14808605345719 |
    +------+------------------+
    3 rows in set (0.01 sec)
    

    상수 이니셜 라이저를 사용하면 시드가 실행되기 전에 문을 컴파일 할 때 한 번 초기화됩니다. 인수로서 상수가 아닌 이니셜 라이저 (컬럼 이름 등)가 사용되는 경우, RAND() 가 호출 될 때마다 그 값에서 시드가 초기화됩니다. (인수 값이 동일한 경우는 RAND() 에서 매번 같은 값을 반환하는 것을 보여줍니다.)

    i <= R < j 의 범위 내에서 임의의 정수 R 을 얻으려면 수식 FLOOR( i + RAND() * ( j - i )) 을 사용합니다. 예를 들어, 7 <= R < 12 의 범위 내에서 임의의 정수를 얻으려면 다음과 같은 명령문을 사용합니다.

     SELECT FLOOR (7 + (RAND () * 5));
    

    WHERE 절의 RAND() 는 WHERE 이 실행될 때마다 재평가됩니다.

    ORDER BY 에서 열이 여러 차례 평가되기 때문에 ORDER BY 절 내에서는 RAND() 값을 가진 컬럼을 사용할 수 없습니다. 그러나 다음과 같이 무작위 순서로 행을 얻을 수 있습니다.

     mysql> SELECT * FROM tbl_name ORDER BY RAND();
    

    LIMIT 와 함께 ORDER BY RAND() 을 사용하면 행 집합에서 무작위 샘플을 선택하는 데 도움이됩니다.

     mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d -> ORDER BY RAND() LIMIT 1000;
    

    RAND() 는 완전한 랜덤 생성기로 설계되어 있지 않습니다. 요청에 따라 임의의 숫자를 빠르게 생성하는 방법이며, 같은 MySQL 버젼의 플랫폼간에 이식 가능합니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다. (Bug # 49222)

  • ROUND( X ) , ROUND( X , D )

    인수 X 를 D 소수점 반올림합니다. 반올림 알고리즘은 X 데이터 형식에 따라 달라집니다. D 가 지정되어 있지 않으면 기본적으로 0으로 설정됩니다. D 를 음수로 지정하면 값 X 의 소수점 왼쪽 D 자리수를 제로로 할 수 있습니다.

     mysql> SELECT ROUND(-1.23);
             -> -1
     mysql> SELECT ROUND(-1.58);
             -> -2
     mysql> SELECT ROUND(1.58);
             -> 2
     mysql> SELECT ROUND(1.298, 1);
             -> 1.3
     mysql> SELECT ROUND(1.298, 0);
             -> 1
     mysql> SELECT ROUND(23.298, -1);
             -> 20
    

    반환형은 (정수, 중복 또는 10 진수 가정) 1 번째의 인수와 같은 형태입니다. 즉, 인수가 정수의 경우, 결과가 정수 (소수점 없음)입니다.

    mysql> SELECT ROUND(150.000,2), ROUND(150,2);
    +------------------+--------------+
    | ROUND(150.000,2) | ROUND(150,2) |
    +------------------+--------------+
    |           150.00 |          150 |
    +------------------+--------------+
    

    ROUND() 는 제 1 인수의 형태에 따라 다음 규칙이 사용됩니다.

    • 참값 숫자의 경우 ROUND() 는 "반올림"또는 "잘라 내기 (올림)"규칙이 사용됩니다. 0.5 이상 소수부를 가진다 값은 양수이면 다음 정수로 반올림, 부의 경우는 다음의 정수로 평가 절하합니다. (즉, 처음부터 먼쪽으로 반올림합니다.) 0.5 미만의 소수 부분을 가지는 값은 양의 경우는 다음의 정수로 평가 절하되고, 부의 경우는 다음 정수로 반올림됩니다.

    • 근사치 숫자의 경우, 결과는 C 라이브러리에 따라 다릅니다. 많은 시스템에서 이것은 ROUND() 에서 "짝수 반올림"규칙이 사용되는 것을 의미합니다. 임의의 소수 부분을 가지는 값은 가장 가까운 짝수 정수로 반올림됩니다.

    다음 예제에서는 정확한 값의 반올림과 근사값의 반올림 차이점을 보여줍니다.

    mysql> SELECT ROUND(2.5), ROUND(25E-1);
    +------------+--------------+
    | ROUND(2.5) | ROUND(25E-1) |
    +------------+--------------+
    | 3          |            2 |
    +------------+--------------+
    

    자세한 내용은 섹션 12.20 "정밀 계산" 을 참조하십시오.

  • SIGN ( X )

    X 가 부의 제로 또는 정의 중인지에 따라 인수의 부호를 -1 , 0 또는 1 로 반환합니다.

     mysql> SELECT SIGN(-32);
             -> -1
     mysql> SELECT SIGN(0);
             -> 0
     mysql> SELECT SIGN(234);
             -> 1
    
  • SIN ( X )

    X 의 사인을 반환합니다. X 는 라디안으로 지정됩니다.

     mysql> SELECT SIN(PI());
             -> 1.2246063538224e-16
     mysql> SELECT ROUND(SIN(PI()));
             -> 0
    
  • SQRT ( X )

    음수가 아닌 숫자 X 의 제곱근을 반환합니다.

     mysql> SELECT SQRT(4);
             -> 2
     mysql> SELECT SQRT(20);
             -> 4.4721359549996
     mysql> SELECT SQRT(-16);
             -> NULL
    
  • TAN ( X )

    X 의 탄젠트 값을 반환합니다. X 는 라디안으로 지정됩니다.

     mysql> SELECT TAN(PI());
             -> -1.2246063538224e-16
     mysql> SELECT TAN(PI()+1);
             -> 1.5574077246549
    
  • TRUNCATE ( X , D )

    D 소수점 내림 숫자 X 를 반환합니다. D 가 0 의 경우 결과에 소수점 또는 소수 부분이 포함되지 않습니다. D 를 음수로 지정하면 값 X 의 소수점 왼쪽 D 자리수를 제로로 할 수 있습니다.

     mysql> SELECT TRUNCATE(1.223,1);
             -> 1.2
     mysql> SELECT TRUNCATE(1.999,1);
             -> 1.9
     mysql> SELECT TRUNCATE(1.999,0);
             -> 1
     mysql> SELECT TRUNCATE(-1.999,1);
             -> -1.9
     mysql> SELECT TRUNCATE(122,-2);
            -> 100
     mysql> SELECT TRUNCATE(10.28*100,0);
            -> 1028
    

    모든 수치는 제로 방향으로 반올림됩니다.


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