FLOOR
FLOOR
input_expr의 값을, 같거나 더 작은 가장 가까운 정수로 반올림하거나, 소수점 이하 자릿수를 지정한 값으로 반올림해 반환해요.
본문
구문
FLOOR( <input_expr> [, <scale_expr> ] )
인자
input_expr
- 연산 대상이 되는 값 또는 표현식이에요. 데이터 타입은 DECFLOAT, FLOAT, NUMBER 같은 숫자 데이터 타입 중 하나여야 해요.
scale_expr
- 출력이 소수점 이하에 포함해야 하는 자릿수예요. 기본 scale_expr은 0으로, 함수가 소수점 이하의 모든 자릿수를 제거한다는 뜻이에요. 음수 스케일에 대한 정보는 아래 사용 시 참고 사항을 참고하세요.
반환 값
반환 타입은 입력 타입에 따라 달라요.
- 입력 표현식이 FLOAT이면 반환 타입은 FLOAT예요.
- 입력 표현식이 DECFLOAT이면 반환 타입은 DECFLOAT예요.
- 입력 표현식이 NUMBER이면 반환 타입은 NUMBER예요. 입력 스케일이 상수인 경우: 입력 스케일이 양수이면 반환 타입은 입력 스케일과 같은 스케일을 가지며, 가능한 모든 결과를 포괄할 수 있을 만큼 충분히 큰 정밀도를 가져요. 입력 스케일이 음수이면 반환 타입의 스케일은 0이에요. 입력 스케일이 상수가 아니면 반환 타입의 스케일은 입력 표현식의 스케일과 같아요.
스케일이 0이면 값은 사실상 INTEGER예요.
예를 들어:
FLOOR(3.14::FLOAT, 1)이 반환하는 데이터 타입은 FLOAT예요.FLOOR(3.14, 1)이 반환하는 NUMBER는 스케일 1, 정밀도 최소 3이에요.FLOOR(-9.99, 0)이 반환하는 NUMBER는 스케일 0, 정밀도 최소 2예요.FLOOR(33.33, -1)이 반환하는 NUMBER는 스케일 0, 정밀도 최소 3이에요.
사용 시 참고 사항
- scale_expr이 음수이면 소수점 이하 자릿수가 아니라 소수점 이전 자릿수를 기준으로 숫자를 조정한다는 뜻이에요. 예를 들어 스케일이 -2이면 결과는 100의 배수예요.
- scale_expr이 입력 표현식의 스케일보다 크면 함수는 아무 효과가 없어요.
- input_expr 또는 scale_expr 중 하나라도 NULL이면 결과는 NULL이에요.
- 음수를 아래로 반올림하면 값이 0에서 더 멀어져요. 예를 들어 FLOOR(-1.1)은 -1이 아니라 -2예요.
- 숫자를 아래로 반올림했을 때 그 숫자가 데이터 타입의 값 범위를 벗어나면 오류가 반환돼요.
예시
이 예시는 scale_expr 매개변수 없이 함수를 보여줘요.
SELECT FLOOR(135.135), FLOOR(-975.975);
+----------------+-----------------+
| FLOOR(135.135) | FLOOR(-975.975) |
|----------------+-----------------|
| 135 | -976 |
+----------------+-----------------+
이 예시는 scale_expr 매개변수를 사용한 함수를 보여주며, 스케일을 음수로 설정한 경우도 포함해요.
테이블을 만들고 채웁니다.
CREATE TABLE test_floor (n FLOAT, scale INTEGER);
INSERT INTO test_floor (n, scale) VALUES
(-975.975, -1),
(-975.975, 0),
(-975.975, 2),
( 135.135, -2),
( 135.135, 0),
( 135.135, 1),
( 135.135, 3),
( 135.135, 50),
( 135.135, NULL)
;
출력:
SELECT n, scale, FLOOR(n, scale)
FROM test_floor
ORDER BY n, scale;
+----------+-------+-----------------+
| N | SCALE | FLOOR(N, SCALE) |
|----------+-------+-----------------|
| -975.975 | -1 | -980 |
| -975.975 | 0 | -976 |
| -975.975 | 2 | -975.98 |
| 135.135 | -2 | 100 |
| 135.135 | 0 | 135 |
| 135.135 | 1 | 135.1 |
| 135.135 | 3 | 135.135 |
| 135.135 | 50 | 135.135 |
| 135.135 | NULL | NULL |
+----------+-------+-----------------+
더 알아보기
- Numeric functions — 숫자 함수 모음
- CEIL — 같거나 더 큰 정수로 올림
- ROUND — 반올림
- TRUNCATE, TRUNC — 소수점 이하 버림