수학 함수

모든 수학 함수는 다음과 같이 동작합니다.

  • 입력 매개변수 중 하나가 NULL인 경우 NULL을 반환합니다.
  • 인수 중 하나가 NaN인 경우 NaN을 반환합니다.

ABS

ABS(X)

설명

절대값을 계산합니다. 인수가 정수이고 출력값을 동일한 유형으로 나타낼 수 없는 경우 오류를 반환합니다. 양의 표현이 없는 최대 음의 입력값의 경우에만 이 오류가 발생합니다. +/-inf 인수에는 +inf를 반환합니다.

SIGN

SIGN(X)

설명

음의 인수, 0, 양의 인수에 각각 -1, 0, +1을 반환합니다. 이 함수는 부동 소수점 인수의 양의 0과 음의 0을 구별하지 않습니다. NaN 인수에는 NaN을 반환합니다.

IS_INF

IS_INF(X)

설명

값이 양의 무한대이거나 음의 무한대이면 TRUE를 반환합니다. NULL 입력에는 NULL을 반환합니다.

IS_NAN

IS_NAN(X)

설명

값이 NaN 값이면 TRUE를 반환합니다. NULL 입력에는 NULL을 반환합니다.

IEEE_DIVIDE

IEEE_DIVIDE(X, Y)

설명

X를 Y로 나눕니다. 이 함수는 절대 실패하지 않습니다. FLOAT64를 반환합니다. 나누기 연산자(/)와 달리 이 함수는 0으로 나누기 또는 오버플로 오류를 생성하지 않습니다.

특수한 경우:

  • 결과가 오버플로되면 +/-inf를 반환합니다.
  • Y=0이고 X=0이면, NaN을 반환합니다.
  • Y=0이고 X!=0이면, +/-inf를 반환합니다.
  • X = +/-inf이고 Y = +/-inf이면 NaN을 반환합니다.

IEEE_DIVIDE의 동작이 아래 표에 자세히 설명되어 있습니다.

IEEE_DIVIDE의 특수한 경우

아래 표는 IEEE_DIVIDE의 특수한 경우를 나열한 것입니다.

분자 데이터 유형(X) 분모 데이터 유형(Y) 결과 값
0을 제외한 모든 유형 0 +/-inf
0 0 NaN
0 NaN NaN
NaN 0 NaN
+/-inf +/-inf NaN

SQRT

SQRT(X)

설명

X의 제곱근을 계산합니다. X가 0보다 작은 경우 오류를 생성합니다. X가 +inf이면 +inf를 반환합니다.

POW

POW(X, Y)

설명

X의 Y로 거듭제곱한 값을 반환합니다. 결과가 언더플로이고 나타낼 수 없는 경우, 이 함수는 0 값을 반환합니다. 다음 중 하나가 참이면 오류를 반환합니다.

  • X는 0보다 작은 유한한 값이고 Y는 정수가 아닙니다.
  • X는 0이고 Y는 0보다 작은 유한한 값입니다.

POW()의 동작이 아래 표에 자세히 설명되어 있습니다.

POWER

POWER(X, Y)

설명

POW()의 동의어입니다.

POW(X, Y)POWER(X, Y)의 특수한 경우

다음은 POW(X, Y)POWER(X, Y)의 특수한 경우입니다.

X Y POW(X, Y) 또는 POWER(X, Y)
1.0 NaN을 포함한 모든 값 1.0
NaN을 포함한 모든 값 0 1.0
-1.0 +/-inf 1.0
ABS(X) < 1 -inf +inf
ABS(X) > 1 -inf 0
ABS(X) < 1 +inf 0
ABS(X) > 1 +inf +inf
-inf Y < 0 0
-inf Y > 0 Y가 홀수이면 -inf, 그렇지 않으면 +inf
+inf Y < 0 0
+inf Y > 0 +inf

EXP

EXP(X)

설명

e의 X승을 계산합니다. 자연 지수 함수라고도 합니다. 결과가 언더플로인 경우, 이 함수는 0을 반환합니다. 결과가 오버플로인 경우 오류를 생성합니다. X가 +/-inf이면 이 함수는 +inf 또는 0을 반환합니다.

LN

LN(X)

설명

X의 자연대수를 계산합니다. X가 0 이하이면 오류를 생성합니다. X가 +inf인 경우, 이 함수는 +inf를 반환합니다.

LOG

LOG(X [, Y])

설명

X만 존재하는 경우, LOGLN의 동의어입니다. Y도 존재한다면, LOG는 Y를 밑으로 하는 X의 로그를 계산합니다. 다음의 경우 오류를 생성합니다.

  • X가 0 이하인 경우
  • Y가 1.0인 경우
  • Y가 0 이하인 경우

LOG(X, Y)의 동작이 아래 표에 자세히 설명되어 있습니다.

LOG(X, Y)의 특수한 경우

X Y LOG(X, Y)
-inf 모든 값 NaN
모든 값 +inf NaN
+inf 0.0 Y < 1.0 -inf
+inf Y > 1.0 +inf

LOG10

LOG10(X)

설명

LOG와 유사하되, 10을 밑으로 한 로그를 계산합니다.

GREATEST

GREATEST(X1,...,XN)

설명

입력 중에 NULL이 있으면 NULL을 반환합니다. 그렇지 않은 경우 입력 중에 NaN이 있으면 NaN을 반환합니다. 그렇지 않을 경우 < 비교에 따라 X1, ..., XN 중 가장 큰 값을 반환합니다.

LEAST

LEAST(X1,...,XN)

설명

입력 중에 NULL이 있으면 NULL을 반환합니다. 입력 중에 NaN이 있으면 NaN을 반환합니다. 그렇지 않을 경우 > 비교에 따라 X1, ..., XN 중 가장 작은 값을 반환합니다.

DIV

DIV(X, Y)

설명

X/Y의 정수 나누기 결과를 반환합니다. 0으로 나눌 경우 오류를 반환합니다. -1로 나누면 오버플로가 발생할 수 있습니다. 가능한 결과 유형은 아래 표를 참조하세요.

SAFE_DIVIDE

SAFE_DIVIDE(X, Y)

설명

나누기 연산자(/)와 동일하지만 0으로 나누기와 같은 오류가 발생하면 NULL을 반환합니다.

SAFE_MULTIPLY

SAFE_MULTIPLY(X, Y)

설명

곱하기 연산자(*)와 동일하지만 오버플로가 발생하면 NULL을 반환합니다.

SAFE_NEGATE

SAFE_NEGATE(X)

설명

단행 빼기 연산자(-)와 동일하지만 오버플로가 발생하면 NULL을 반환합니다.

SAFE_ADD

SAFE_ADD(X, Y)

설명

더하기 연산자(+)와 동일하지만 오버플로가 발생하면 NULL을 반환합니다.

SAFE_SUBTRACT

SAFE_SUBTRACT(X, Y)

설명

뺄셈 연산자(-)와 동일하지만 오버플로가 발생하면 NULL을 반환합니다.

MOD

MOD(X, Y)

설명

모듈로 함수: X를 Y로 나눈 나머지를 반환합니다. 반환되는 값은 X와 동일한 기호를 갖습니다. Y가 0이면 오류가 생성됩니다. 결과 유형은 아래 표를 참조하세요.

ROUND

ROUND(X [, N])

설명

X만 존재하는 경우, ROUND는 X를 가장 가까운 정수로 반올림합니다. N이 존재하는 경우, ROUND는 X를 소수점 이하 N자리까지 반올림합니다. N이 음수이면 ROUND는 소수점 왼쪽의 자릿수를 반올림합니다. 중간값은 올림됩니다. 오버플로가 발생하면 오류를 생성합니다.

TRUNC

TRUNC(X [, N])

설명

X만 존재하는 경우 TRUNC는 절대값이 X의 절대값 이하인 가장 가까운 정수로 X를 반올림합니다. N도 존재할 경우, TRUNCROUND(X, N)과 유사하게 동작하지만, 항상 0쪽으로 반올림하며 절대 오버플로가 발생하지 않습니다.

CEIL

CEIL(X)

설명

X보다 작지 않은 가장 작은 정수 값(FLOAT64 유형)을 반환합니다.

CEILING

CEILING(X)

설명

CEIL(X)의 동의어

FLOOR

FLOOR(X)

설명

X보다 크지 않은 가장 큰 정수 값(FLOAT64 유형)을 반환합니다.

반올림 함수의 동작 예

Cloud Spanner SQL 반올림 함수의 동작 예:

입력 'X' ROUND(X) TRUNC(X) CEIL(X) FLOOR(X)
2.0 2.0 2.0 2.0 2.0
2.3 2.0 2.0 3.0 2.0
2.8 3.0 2.0 3.0 2.0
2.5 3.0 2.0 3.0 2.0
-2.3 -2.0 -2.0 -2.0 -3.0
-2.8 -3.0 -2.0 -2.0 -3.0
-2.5 -3.0 -2.0 -2.0 -3.0
0 0 0 0 0
+/-inf +/-inf +/-inf +/-inf +/-inf
NaN NaN NaN NaN NaN

COS

COS(X)

설명

라디안으로 지정된 X의 코사인을 계산합니다. 절대 실패하지 않습니다.

COSH

COSH(X)

설명

라디안으로 지정된 X의 쌍곡선 코사인을 계산합니다. 오버플로가 발생하면 오류를 생성합니다.

ACOS

ACOS(X)

설명

X의 역코사인 주요 값을 계산합니다. 반환 값의 범위는 [0,π]입니다. X의 값이 [-1, 1] 범위를 벗어나면 오류를 생성합니다.

ACOSH

ACOSH(X)

설명

X의 역쌍곡선 코사인을 계산합니다. X의 값이 1 미만이면 오류를 생성합니다.

SIN

SIN(X)

설명

라디안으로 지정된 X의 사인을 계산합니다. 절대 실패하지 않습니다.

SINH

SINH(X)

설명

라디안으로 지정된 X의 쌍곡선 사인을 계산합니다. 오버플로가 발생하면 오류를 생성합니다.

ASIN

ASIN(X)

설명

X의 역사인 주요 값을 계산합니다. 반환 값의 범위는 [-π/2,π/2]입니다. X가 [-1, 1] 범위를 벗어나면 오류를 생성합니다.

ASINH

ASINH(X)

설명

X의 역쌍곡선 사인을 계산합니다. 오류가 발생하지 않습니다.

TAN

TAN(X)

설명

라디안으로 지정된 X의 탄젠트를 계산합니다. 오버플로가 발생하면 오류를 생성합니다.

TANH

TANH(X)

설명

라디안으로 지정된 X의 쌍곡선 탄젠트를 계산합니다. 오류가 발생하지 않습니다.

ATAN

ATAN(X)

설명

X의 역탄젠트 주요 값을 계산합니다. 반환 값의 범위는 [-π/2,π/2]입니다. 오류가 발생하지 않습니다.

ATANH

ATANH(X)

설명

X의 역쌍곡선 탄젠트를 계산합니다. X의 값이 [-1, 1] 범위를 벗어나면 오류를 생성합니다.

ATAN2

ATAN2(Y, X)

설명

사분면을 결정하기 위해 두 인수의 기호를 사용하여 Y/X의 역탄젠트 주요 값을 계산합니다. 반환 값은 [-π,π] 범위 이내입니다. 이 함수의 동작은 아래 표에 자세하게 설명되어 있습니다.

ATAN2()의 특수한 경우

Y X ATAN2(Y, X)
NaN 모든 값 NaN
모든 값 NaN NaN
0 0 X와 Y의 기호에 따라 0, π, 또는 -π
유한한 값 -inf Y의 기호에 따라 π 또는 -π
유한한 값 +inf 0
+/-inf 유한한 값 Y의 기호에 따라 π/2 또는 π/2
+/-inf -inf Y의 기호에 따라 ¾π 또는 -¾π
+/-inf +inf Y의 기호에 따라 π/4 또는 -π/4

삼각 반올림 함수와 쌍곡선 반올림 함수의 특수한 경우

X COS(X) COSH(X) ACOS(X) ACOSH(X) SIN(X) SINH(X) ASIN(X) ASINH(X) TAN(X) TANH(X) ATAN(X) ATANH(X)
+/-inf NaN =+inf NaN =+inf NaN =+inf NaN =+inf NaN =+1.0 π/2 NaN
-inf NaN =+inf NaN NaN NaN -inf NaN -inf NaN -1.0 -π/2 NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN