Loading...
MySQL 9.5 Reference Manual 9.5의 14.6.1 Arithmetic Operators의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Table 14.9 Arithmetic Operators
| Name | Description |
|---|---|
%, MOD | Modulo 연산자 |
* | 곱셈 연산자 |
+ | 덧셈 연산자 |
- | 뺄셈 연산자 |
- | 피연산자의 부호를 변경 |
/ | 나눗셈 연산자 |
DIV | 정수 나눗셈 |
일반적인 산술 연산자를 사용할 수 있습니다. 결과는 다음 규칙에 따라 결정됩니다:
두 피연산자가 모두 정수이고 그중 하나라도 unsigned 이면, 결과는 unsigned 정수입니다. 뺄셈의 경우
NO_UNSIGNED_SUBTRACTION
SQL 모드가 활성화되어 있으면, 피연산자 중 하나가 unsigned 이더라도 결과는 signed 가 됩니다.
+,
-,
/,
*,
% 의 피연산자 중 하나라도 실수 또는 문자열 값이면, 결과의 정밀도는 가장 큰 정밀도를 가진 피연산자의 정밀도와 같습니다.
/ 로 수행되는 나눗셈에서, 두 개의 정확한 값 피연산자를 사용할 때 결과의 스케일은 첫 번째 피연산자의 스케일에
div_precision_increment
시스템 변수 값(기본값은 4)을 더한 값입니다. 예를 들어, 식 5.05 / 0.014 의 결과는 소수점 이하 6자리의 스케일을 가집니다
(360.714286).
이 규칙들은 각 연산마다 적용되며, 중첩 계산은 각 구성 요소의 정밀도를 의미합니다. 따라서
(14620 / 9432456) / (24250 / 9432456) 은 먼저
(0.0014) / (0.0026) 으로 계산되고, 최종 결과는 소수점 이하 8자리의 정밀도를 갖습니다
(0.60288653).
이러한 규칙과 적용 방식 때문에, 계산의 구성 요소 및 하위 구성 요소가 적절한 정밀도 수준을 사용하도록 주의해야 합니다. Section 14.10, “Cast Functions and Operators”를 참고하십시오.
수치 표현식 계산에서 오버플로를 처리하는 방법에 대한 정보는 Section 13.1.7, “Out-of-Range and Overflow Handling”를 참조하십시오.
산술 연산자는 숫자에 적용됩니다. 다른 타입의 값에 대해서는 대체 연산을 사용할 수 있습니다. 예를 들어, 날짜 값을 더하려면
DATE_ADD()를 사용하십시오.
Section 14.7, “Date and Time Functions”를 참조하십시오.
덧셈:
1mysql> SELECT 3+5; 2 -> 8
뺄셈:
1mysql> SELECT 3-5; 2 -> -2
단항 마이너스. 이 연산자는 피연산자의 부호를 바꿉니다.
1mysql> SELECT - 2; 2 -> -2
참고
이 연산자를 BIGINT 에 사용하면, 반환 값도
BIGINT 입니다. 이는 값이
−263 이 될 수 있는 정수에 - 를 사용하는 것을 피해야 함을 의미합니다.
곱셈:
1mysql> SELECT 3*5; 2 -> 15 3mysql> SELECT 18014398509481984*18014398509481984.0; 4 -> 324518553658426726783156020576256.0 5mysql> SELECT 18014398509481984*18014398509481984; 6 -> out-of-range error
마지막 표현식은 정수 곱셈의 결과가
BIGINT 계산의 64비트 범위를 초과하기 때문에 에러를 발생시킵니다. (자세한 내용은
Section 13.1, “Numeric Data Types”를 참조하십시오.)
나눗셈:
1mysql> SELECT 3/5; 2 -> 0.60
0 으로 나누면 NULL 결과가 생성됩니다:
1mysql> SELECT 102/(1-1); 2 -> NULL
나눗셈은 그 결과가 정수로 변환되는 컨텍스트에서 수행될 때에만
BIGINT 연산으로 계산됩니다.
정수 나눗셈. 나눗셈 결과에서 소수점 오른쪽에 있는 모든 소수 부분을 버립니다.
두 피연산자 중 하나라도 비정수 타입이면, 피연산자는 DECIMAL 로 변환되고
DECIMAL
연산을 사용해 나눈 후 결과를
BIGINT 로 변환합니다. 결과가 BIGINT 범위를 초과하면 에러가 발생합니다.
1mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2; 2 -> 2, -2, -2, 2
Modulo 연산. N 을 M 으로 나눈 나머지를 반환합니다. 자세한 내용은
Section 14.6.2, “Mathematical Functions”의 MOD()
함수 설명을 참조하십시오.
14.6 Numeric Functions and Operators
14.6.2 Mathematical Functions