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.5707963267949ASIN (
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.1071487177941ATAN(
,Y
,X
)ATAN2(
Y
,X
)두 변수
X
와Y
의 아크 탄젠트를 반환합니다. 이것은 두 인수의 부호는 결과 사분면의 판정에 사용되는 점을 제외하고
의 아크 탄젠트의 계산과 유사합니다.Y
/X
mysql>
SELECT ATAN(-2,2);
-> -0.78539816339745 mysql>SELECT ATAN2(PI(),0);
-> 1.5707963267949CEIL (
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());
-> -1COT (
X
)X
의 코탄젠트를 돌려줍니다.mysql>
SELECT COT(12);
-> -1.5726734063977 mysql>SELECT COT(0);
-> NULLCRC32 (
expr
)순환 중복 검사 값을 계산하고 32 비트 값의 부호없는 값을 반환합니다. 인수가
NULL
이면 결과도NULL
입니다. 인수는 문자열로 간주됩니다 (가능한 경우) 캐릭터 라인이 아닌 경우 문자열로 처리됩니다.mysql>
SELECT CRC32('MySQL');
-> 3259397556 mysql>SELECT CRC32('mysql');
-> 2501908538DEGREES (
X
)라디안에서 학위로 변환 된 인수
X
를 리턴합니다.mysql>
SELECT DEGREES(PI());
-> 180 mysql>SELECT DEGREES(PI() / 2);
-> 90EXP (
X
)e (자연 로그의 밑)의
X
제곱 값을 반환합니다. 이 함수의 반대는 (하나의 인수 만 사용)LOG()
또는LN()
입니다.mysql>
SELECT EXP(2);
-> 7.3890560989307 mysql>SELECT EXP(-2);
-> 0.13533528323661 mysql>SELECT EXP(0);
-> 1FLOOR (
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);
-> NULLLOG(
는B
,X
)LOG(
와 동등합니다.X
) / LOG(B
)LOG2 (
X
)
의 바닥 2의 로그를 반환합니다.X
mysql>
SELECT LOG2(65536);
-> 16 mysql>SELECT LOG2(-100);
-> NULLLOG2()
는 저장에 필요한 비트 수를 결정하는 데 도움이됩니다. 이 함수는 식LOG(
와 동일합니다.X
) / LOG(2)LOG10 (
X
)X
의 바닥 10의 로그를 반환합니다.mysql>
SELECT LOG10(2);
-> 0.30102999566398 mysql>SELECT LOG10(100);
-> 2 mysql>SELECT LOG10(-100);
-> NULLLOG10(
는X
)LOG(10,
와 동등합니다.X
)MOD(
,N
,M
)
,N
%M
N
MODM
모듈로 연산.
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.5MOD(
은N
,0)NULL
을 반환합니다.PI ()
π (pi) 값을 반환합니다. 표시되는 기본 소수점 이하의 자리수는 7이지만, MySQL은 내부적으로 전체 배정 밀도 값이 사용됩니다.
mysql>
SELECT PI();
-> 3.141593 mysql>SELECT PI()+0.000000000000000000;
-> 3.141592653589793116POW (
X
,Y
)X
의Y
승 값을 반환합니다.mysql>
SELECT POW(2,2);
-> 4 mysql>SELECT POW(2,-2);
-> 0.25POWER (
X
,Y
)이것은
POW()
의 동의어입니다.RADIANS (
X
)학위를 라디안으로 변환 된 인수
X
를 리턴합니다.참고π 라디안은 180 학위와 동등합니다.
mysql>
SELECT RADIANS(90);
-> 1.5707963267949RAND()
,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);
-> 1SIN (
X
)X
의 사인을 반환합니다.X
는 라디안으로 지정됩니다.mysql>
SELECT SIN(PI());
-> 1.2246063538224e-16 mysql>SELECT ROUND(SIN(PI()));
-> 0SQRT (
X
)음수가 아닌 숫자
X
의 제곱근을 반환합니다.mysql>
SELECT SQRT(4);
-> 2 mysql>SELECT SQRT(20);
-> 4.4721359549996 mysql>SELECT SQRT(-16);
-> NULLTAN (
X
)X
의 탄젠트 값을 반환합니다.X
는 라디안으로 지정됩니다.mysql>
SELECT TAN(PI());
-> -1.2246063538224e-16 mysql>SELECT TAN(PI()+1);
-> 1.5574077246549TRUNCATE (
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모든 수치는 제로 방향으로 반올림됩니다.