카테고리:

숫자 함수 (반올림 및 잘림)

TRUNCATE , TRUNC

입력 식을 0에 가장 가까운(또는 동일한) 값으로 반내림합니다. 소수 자릿수 매개 변수로 지정한 값에 따라 변환이 제거될 수 있습니다.

  • 소수점 뒤의 모든 자릿수로 정수를 생성합니다. 숫자에 TRUNC 를 사용하는 것이 기본값이며 가장 일반적인 방법입니다.

  • 소수점 뒤의 소수 자릿수 중 일부가 누락되어 정확도가 떨어지는 값을 생성합니다.

  • 소수점 뒤의 모든 소수 자릿수와 소수점 왼쪽의 일부 소수 자릿수를 더하여 10, 100 또는 기타 10의 거듭제곱인 값을 생성합니다.

TRUNCATE 및 TRUNC 함수는 동의어입니다.

참고

TRUNC 에 과부하가 걸렸습니다. 또한 날짜/시간 값과 함께 사용하여 날짜, 시간 및 타임스탬프 를 지정된 부분으로 잘라낼 수 있습니다. 숫자 TRUNC 에는 필수적 매개 변수와 선택적 매개 변수가 하나씩 있습니다. 날짜/시간 TRUNC 에는 2개의 필수 매개 변수가 있습니다.

참고 항목:

CEIL , FLOOR , ROUND

구문

TRUNCATE( <input_expr> [ , <scale_expr> ] )

TRUNC( <input_expr> [ , <scale_expr> ] )
Copy

인자

input_expr

The value or expression to operate on. The data type must be one of the numeric data types, such as DECFLOAT, FLOAT, or NUMBER.

scale_expr

The number of digits to include after the decimal point.

기본 scale_expr 은 0이며, 이는 함수가 소수점 이하의 모든 숫자를 제거함을 의미합니다.

소수 자릿수에 대한 정보는 아래의 사용법 노트 섹션을 참조하십시오.

반환

  • If the input is a NUMBER value, the data type of the returned value is NUMBER(precision, scale).

    입력 스케일이 0보다 크거나 같으면 출력 스케일은 일반적으로 입력 스케일과 일치합니다.

    입력 스케일이 음수이면 출력 스케일은 0입니다.

    예:

    • TRUNCATE(3.14, 1) 에서 반환된 데이터 타입은 NUMBER(4, 1) 입니다.

    • TRUNCATE(3.14, 0) 에서 반환된 데이터 타입은 NUMBER(4, 0) 입니다.

    • TRUNCATE(33.33, -1) 에서 반환된 데이터 타입은 NUMBER(5, 0) 입니다.

    스케일이 0이면 값은 사실상 정수입니다.

  • If the input is a FLOAT value, the data type of the returned value is FLOAT.

  • If the input is a DECFLOAT value, the data type of the returned value is DECFLOAT.

사용법 노트

  • scale_expr 이 음수인 경우, 숫자를 조정할 소수점 앞의 자릿수를 지정합니다. 예를 들어, 스케일이 -2이면 결과는 100의 배수입니다.

  • scale_expr 이 입력 식보다 크면 함수는 아무런 영향을 미치지 않습니다.

  • input_expr 또는 scale_expr 이 NULL이면 결과는 NULL입니다.

  • 잘라내기는 더 작은 숫자가 아니라 0을 향해 수행됩니다. 예를 들어 TRUNCATE(-9.6)-10 이 아닌 -9 가 됩니다.

다음 예에서는 숫자 값에 대한 TRUNC 함수를 보여줍니다. 날짜, 시간 및 타임스탬프 잘라내기 예는 TRUNC 의 날짜/시간 양식 섹션을 참조하십시오.

이 예제에서는 이 샘플 테이블의 데이터를 사용합니다. 이 테이블에는 -975.975와 135.135라는 두 개의 소수점 숫자와 TRUNC 함수를 사용하여 소수 자릿수 매개 변수에 사용할 서로 다른 값이 포함되어 있습니다.

CREATE TABLE numeric_trunc_demo (n FLOAT, scale INTEGER);
INSERT INTO numeric_trunc_demo (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);
Copy

소수 자릿수 매개 변수를 지정하지 않은 경우 숫자 매개 변수가 있는 TRUNC 의 기본 동작은 매개 변수와 같거나 0에 가까운 정수 값을 반환하는 것입니다. 소수 자릿수 매개 변수를 0으로 지정해도 같은 효과가 있습니다.

SELECT DISTINCT n, TRUNCATE(n)
  FROM numeric_trunc_demo ORDER BY n;
Copy
+----------+-------------+
|        N | TRUNCATE(N) |
|----------+-------------|
| -975.975 |        -975 |
|  135.135 |         135 |
+----------+-------------+

다음 예는 양수와 음수에 0, 양수 또는 음수 소수 자릿수 매개 변수를 적용한 TRUNC 함수를 호출한 결과를 보여줍니다.

  • 0 소수 자릿수 매개 변수를 지정하면 소수점 뒤의 모든 자릿수가 제거되어 정수 값이 생성됩니다.

  • 양수 소수 자릿수 매개 변수를 지정하면 소수점 뒤에 지정된 수의 유효 자릿수가 남습니다.

  • 음수 소수 자릿수 매개 변수를 지정하면 소수점 왼쪽에 있는 해당 자릿수가 0으로 바뀝니다.

  • +38보다 크거나 -38보다 작은 소수 자릿수를 지정하는 것은 +38 또는 -38을 지정하는 것과 동일합니다.

SELECT n, scale, TRUNC(n, scale)
  FROM numeric_trunc_demo ORDER BY n, scale;
Copy
+----------+-------+-----------------+
|        N | SCALE | TRUNC(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -970     |
| -975.975 |     0 |        -975     |
| -975.975 |     2 |        -975.97  |
|  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 |
+----------+-------+-----------------+