수색…


비고

MySQL은 대부분의 컴퓨터에서 계산을 위해 64 비트 IEEE 754 부동 소수점 연산 을 사용합니다.

정수 문맥에서는 정수 연산을 사용합니다.

  • RAND() 는 완벽한 난수 생성 프로그램이 아닙니다. 주로 의사 난수 생성에 주로 사용됩니다.

산술 연산자

MySQL은 다음과 같은 산술 연산자를 제공합니다.

운영자 이름
+ 부가 SELECT 3+5; -> 8
SELECT 3.5+2.5; -> 6.0
SELECT 3.5+2; -> 5.5
- 빼기 SELECT 3-5; -> -2
* 곱셈 SELECT 3 * 5; -> 15
/ 분할 SELECT 20 / 4; -> 5
SELECT 355 / 113; -> 3.1416
SELECT 10.0 / 0; -> NULL
DIV 정수 부 SELECT 5 DIV 2; -> 2
% 또는 MOD 모듈러스 SELECT 7 % 3; -> 1
SELECT 15 MOD 4 -> 3
SELECT 15 MOD -4 -> 3
SELECT -15 MOD 4 -> -3
SELECT -15 MOD -4 -> -3
SELECT 3 MOD 2.5 -> 0.5

빅트

산술의 숫자가 모두 정수 인 경우, MySQL은 BIGINT (부호있는 64 비트) 정수 데이터 유형을 사용하여 작업을 수행합니다. 예 :

select (1024 * 1024 * 1024 * 1024 *1024 * 1024) + 1 -> 1,152,921,504,606,846,977

select (1024 * 1024 * 1024 * 1024 *1024 * 1024 * 1024 -> BIGINT 범위 초과 오류

더블

산술 연산의 숫자가 소수 일 경우, MySQL은 64 비트 IEEE 754 부동 소수점 연산을 사용 합니다. 부동 소수점 산술을 사용할 때는주의해야합니다. 왜냐하면 많은 부동 소수점 숫자는 본질적으로 정확한 값이 아닌 근사치이기 때문 입니다.

수학 상수

파이

다음은 PI 값을 소수점 이하 6 자리로 반환합니다. 실제 값은 DOUBLE 유용합니다.

SELECT PI();    -> 3.141593

삼각법 (SIN, COS)

각도는 각도가 아닌 라디안 단위입니다. 모든 계산은 IEEE 754 64 비트 부동 소수점 에서 수행됩니다. 모든 부동 소수점 계산은 기계 ε (ε) 오류 라고하는 작은 오류의 영향을 받기 쉽기 때문에이를 비교하려고하지 마십시오. 부동 소수점을 사용할 때 이러한 오류를 피할 방법이 없습니다. 그들은 기술에 내장되어 있습니다.

DECIMAL 값을 삼각법 계산에 사용하면 암시 적으로 부동 소수점으로 변환 된 다음 10 진수로 다시 변환됩니다.

사인

라디안으로 표시된 숫자 X의 사인을 구합니다.

SELECT SIN(PI()); -> 1.2246063538224e-16

코사인

X가 라디안 단위로 주어질 때 X의 코사인을 반환합니다.

SELECT COS(PI()); -> -1

접선

라디안으로 표시된 숫자 X의 탄젠트를 반환합니다. 결과가 0에 매우 가깝지만 0은 아님을 확인하십시오. 이것은 기계 ε의 예입니다.

SELECT TAN(PI());   -> -1.2246063538224e-16

아크 코사인 (역 코사인)

X가 -1 to 1 범위에 있으면 X의 아크 코사인을 반환합니다.

SELECT ACOS(1);    -> 0
SELECT ACOS(1.01); -> NULL

아크 사인 (역 사인)

X가 -1 to 1 범위에있는 경우 X의 아크 사인을 반환합니다.

SELECT ASIN(0.2); -> 0.20135792079033

아크 탄젠트 (역 탄젠트)

ATAN(x) 는 단일 숫자의 아크 탄젠트를 반환합니다.

SELECT ATAN(2); -> 1.1071487177941

ATAN2(X, Y) 는 두 변수 X와 Y의 아크 탄젠트를 반환합니다. 이는 Y / X의 아크 탄젠트를 계산하는 것과 비슷합니다. 그러나 수치 적으로 더 강력합니다. 즉, X가 0에 가까울 때 t 함수가 올바르게 작동하고 기호 두 인수 중 하나를 사용하여 결과의 ​​사분면을 결정합니다.

모범 사례는 가능하면 ATAN() 대신 ATAN2() 를 사용하는 수식을 작성하는 것이 좋습니다.

 ATAN2(1,1);    -> 0.7853981633974483 (45 degrees)
 ATAN2(1,-1);   -> 2.356194490192345  (135 degrees)
 ATAN2(0, -1);  -> PI  (180 degrees)  don't try ATAN(-1 / 0)... it won't work

코탄젠트

X의 코탄 탄트를 반환합니다.

SELECT COT(12); -> -1.5726734063977

변환

SELECT RADIANS(90) -> 1.5707963267948966
SELECT SIN(RADIANS(90)) -> 1
SELECT DEGREES(1), DEGREES(PI()) -> 57.29577951308232, 180

반올림 (ROUND, FLOOR, CEIL)

10 진수를 정수 값으로 반올림

정확한 숫자 값 (예 : DECIMAL ) : 숫자의 첫 번째 소수점이 5 이상인 경우이 함수는 숫자를 0에서 다음 정수로 반올림 합니다 . 이 소수 자리가 4 이하이면이 함수는 0에 가장 가까운 다음 정수 값으로 반올림 됩니다 .

SELECT ROUND(4.51) -> 5
SELECT ROUND(4.49) -> 4
SELECT ROUND(-4.51) -> -5

근사 숫자 값 (예 : DOUBLE )의 경우 : ROUND() 함수의 결과는 C 라이브러리에 따라 달라집니다. 많은 시스템에서 ROUND()가장 가까운 짝수 룰에 대한 라운드를 사용한다는 것을 의미합니다.

SELECT ROUND(45e-1) -> 4  -- The nearest even value is 4
SELECT ROUND(55e-1) -> 6  -- The nearest even value is 6

숫자를 말하다.

숫자를 반올림하려면 CEIL() 또는 CEILING() 함수를 사용하십시오.

SELECT CEIL(1.23)    -> 2
SELECT CEILING(4.83) -> 5

숫자 줄이기

숫자를 반올림하려면 FLOOR() 함수를 사용하십시오.

SELECT FLOOR(1.99) -> 1

바닥과 CEIL은 -infinity에서 멀어 지거나 멀어집니다.

SELECT FLOOR(-1.01), CEIL(-1.01) -> -2 and -1
SELECT FLOOR(-1.99), CEIL(-1.99) -> -2 and -1

10 진수를 지정된 소수 자릿수로 반올림합니다.

SELECT ROUND(1234.987, 2) -> 1234.99
SELECT ROUND(1234.987, -2) -> 1200

상반과 하반의 논의와 "5"도 적용됩니다.

숫자를 힘 (POW)으로 올린다.

숫자 xy 로 올리려면 POW() 또는 POWER() 함수를 사용하십시오.

SELECT POW(2,2); => 4
SELECT POW(4,2); => 16

제곱근 (SQRT)

SQRT() 함수를 사용하십시오. 숫자가 음수이면 NULL 이 반환됩니다.

SELECT SQRT(16); -> 4
SELECT SQRT(-3); -> NULL

난수 (RAND)

임의의 숫자 생성

01 사이의 의사 난수 부동 소수점 숫자를 생성하려면 RAND() 함수를 사용하십시오

다음 쿼리가 있다고 가정합니다.

SELECT i, RAND() FROM t;

그러면 다음과 같이 반환됩니다.

나는 랜드()
1 0.6191438870682
2 0.93845168309142
0.83482678498591

범위 내의 난수

a <= n <= b 범위의 난수를 생성하려면 다음 수식을 사용할 수 있습니다.

FLOOR(a + RAND() * (b - a + 1))

예를 들어 7에서 12 사이의 임의의 숫자가 생성됩니다.

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

테이블에서 임의로 행을 반환하는 간단한 방법은 다음과 같습니다.

SELECT * FROM tbl ORDER BY RAND();

이들은 의사 난수 입니다.

MySQL의 의사 난수 생성기는 암호로 안전하지 않습니다. 즉, MySQL을 사용하여 비밀 번호로 사용할 임의의 숫자를 생성하는 경우 MySQL을 사용한다는 것을 알고있는 결정적인 적자는 사용자가 믿을 수있는 것보다 더 쉽게 비밀을 추측 할 수 있습니다.

절대 값 및 부호 (ABS, SIGN)

숫자의 절대 값을 반환합니다.

SELECT ABS(2);   -> 2
SELECT ABS(-46); -> 46

숫자의 sign 는 0과 비교합니다.

기호 결과
-1 n <0 SELECT SIGN(42); -> 1
0 n = 0 SELECT SIGN(0); -> 0
1 n> 0 SELECT SIGN(-3); -> -1
SELECT SIGN(-423421); -> -1


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow