수학 함수 (Math Functions)
Turso는 SQLite의 수학 함수를 모두 제공해요. 이 함수들은 수치 값을 다루고, 특별한 언급이 없는 한 REAL을 반환해요. 인수 중 하나라도 NULL이면 함수는 NULL을 반환해요. 인수가 수치가 아니고 변환도 불가능하면 함수에 따라 NULL 또는 0.0을 반환해요.
출처: 문서
본문
함수 레퍼런스
삼각 함수
| 함수 |
설명 |
반환 타입 |
acos(X) |
X의 역코사인(라디안). X는 -1.0과 1.0 사이여야 해요 |
REAL |
asin(X) |
X의 역사인(라디안). X는 -1.0과 1.0 사이여야 해요 |
REAL |
atan(X) |
X의 역탄젠트(라디안) |
REAL |
atan2(Y, X) |
Y/X의 역탄젠트(라디안). 두 인수의 부호로 사분면을 결정해요 |
REAL |
cos(X) |
X의 코사인. X는 라디안 |
REAL |
sin(X) |
X의 사인. X는 라디안 |
REAL |
tan(X) |
X의 탄젠트. X는 라디안 |
REAL |
쌍곡선 함수
| 함수 |
설명 |
반환 타입 |
acosh(X) |
X의 역쌍곡선 코사인. X는 >= 1.0이어야 해요 |
REAL |
asinh(X) |
X의 역쌍곡선 사인 |
REAL |
atanh(X) |
X의 역쌍곡선 탄젠트. X는 -1.0과 1.0 사이여야 해요 |
REAL |
cosh(X) |
X의 쌍곡선 코사인 |
REAL |
sinh(X) |
X의 쌍곡선 사인 |
REAL |
tanh(X) |
X의 쌍곡선 탄젠트 |
REAL |
각도 변환
| 함수 |
설명 |
반환 타입 |
degrees(X) |
X를 라디안에서 도(degree)로 변환 |
REAL |
radians(X) |
X를 도에서 라디안으로 변환 |
REAL |
반올림과 절단
| 함수 |
설명 |
반환 타입 |
ceil(X) |
X보다 작지 않은 가장 작은 정수 |
INTEGER |
ceiling(X) |
ceil(X)의 별칭 |
INTEGER |
floor(X) |
X보다 크지 않은 가장 큰 정수 |
INTEGER |
trunc(X) |
X의 정수부 (0쪽으로 절단) |
INTEGER |
로그와 지수 함수
| 함수 |
설명 |
반환 타입 |
exp(X) |
e의 X승 |
REAL |
ln(X) |
X의 자연로그. X는 > 0이어야 해요 |
REAL |
log(X) |
X의 자연로그 (ln(X)와 동일) |
REAL |
log(B, X) |
밑 B인 X의 로그. 둘 다 > 0이고 B != 1이어야 해요 |
REAL |
log10(X) |
X의 상용로그(밑 10). X는 > 0이어야 해요 |
REAL |
log2(X) |
X의 밑 2 로그. X는 > 0이어야 해요 |
REAL |
인수 하나짜리 `log(X)`는 자연로그(밑 e)를 반환해요. SQLite 동작과 같아요. 일부 다른 데이터베이스에서 `log(X)`가 상용로그(밑 10)를 반환하는 것과는 다르니 주의하세요.
산술 함수
| 함수 |
설명 |
반환 타입 |
mod(X, Y) |
X를 Y로 나눈 나머지 |
REAL |
pow(X, Y) |
X의 Y승 |
REAL |
power(X, Y) |
pow(X, Y)의 별칭 |
REAL |
sqrt(X) |
X의 제곱근. X는 >= 0이어야 해요 |
REAL |
sign(X) |
X가 음수면 -1, 0이면 0, 양수면 +1 |
INTEGER |
gcd(A, B) |
두 정수의 최대공약수 |
INTEGER |
lcm(A, B) |
두 정수의 최소공배수 |
INTEGER |
상수
| 함수 |
설명 |
반환 타입 |
pi() |
파이 값 반환 (3.141592653589793) |
REAL |
시그니처
acos()
acos(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
-1.0과 1.0 사이의 값 |
반환: REAL. 코사인이 X가 되는 각도(라디안). X가 [-1.0, 1.0] 범위를 벗어나면 NULL.
acosh()
acosh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
1.0 이상의 값 |
반환: REAL. X의 역쌍곡선 코사인. X \< 1.0이면 NULL.
asin()
asin(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
-1.0과 1.0 사이의 값 |
반환: REAL. 사인이 X가 되는 각도(라디안). X가 [-1.0, 1.0] 범위를 벗어나면 NULL.
asinh()
asinh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: REAL. X의 역쌍곡선 사인.
atan()
atan(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: REAL. 탄젠트가 X가 되는 각도(라디안). 결과는 (-pi/2, pi/2) 범위에 있어요.
atan2()
atan2(Y, X)
| 매개변수 |
타입 |
설명 |
Y |
REAL or INTEGER |
y 좌표 |
X |
REAL or INTEGER |
x 좌표 |
반환: REAL. 양의 x축과 점 (X, Y) 사이의 각도(라디안). 결과는 (-pi, pi] 범위에 있어요. atan(Y/X)와 달리, atan2는 모든 사분면과 X가 0인 경우를 올바르게 처리해요.
atanh()
atanh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
-1.0과 1.0 사이의 값 (배타적) |
반환: REAL. X의 역쌍곡선 탄젠트. X가 (-1.0, 1.0) 범위를 벗어나면 NULL.
ceil() / ceiling()
ceil(X)
ceiling(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: INTEGER. X보다 작지 않은 가장 작은 정수.
SELECT ceil(3.2); -- 4
SELECT ceil(-3.2); -- -3
SELECT ceiling(5.0); -- 5
cos()
cos(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
라디안 각도 |
반환: REAL. X의 코사인.
cosh()
cosh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: REAL. X의 쌍곡선 코사인.
degrees()
degrees(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
라디안 각도 |
반환: REAL. 라디안에서 도(degree)로 변환된 X.
SELECT degrees(pi()); -- 180.0
SELECT degrees(pi()/2); -- 90.0
exp()
exp(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
지수 |
반환: REAL. e의 X승.
SELECT exp(0); -- 1.0
SELECT exp(1); -- 2.718281828459045
gcd()
gcd(A, B)
| 매개변수 |
타입 |
설명 |
A |
INTEGER |
첫 번째 피연산자 |
B |
INTEGER |
두 번째 피연산자 |
반환: INTEGER. A와 B의 최대공약수. 입력 부호와 무관하게 결과는 항상 음수가 아니에요. gcd(0, 0)은 0을 반환해요. 인수 중 하나라도 NULL이면 NULL을 반환해요. 결과가 부호 있는 64비트 정수로 표현 불가능하면 정수 오버플로 오류가 발생해요 (그런 경우는 -9223372036854775808이 유일해요).
SELECT gcd(12, 8); -- 4
SELECT gcd(-12, 8); -- 4
SELECT gcd(0, 7); -- 7
SELECT gcd(0, 0); -- 0
SELECT gcd(NULL, 7); -- NULL
`gcd`와 `lcm`은 SQLite에 없는 PostgreSQL/MySQL/Oracle 호환 추가 기능이에요. 부호 있는 64비트 정수로 동작하고, 파싱할 수 없는 비정수 텍스트 입력은 NULL을 반환해요.
lcm()
lcm(A, B)
| 매개변수 |
타입 |
설명 |
A |
INTEGER |
첫 번째 피연산자 |
B |
INTEGER |
두 번째 피연산자 |
반환: INTEGER. A와 B의 최소공배수. 입력 부호와 무관하게 결과는 항상 음수가 아니에요. lcm(_, 0)과 lcm(0, _)는 0을 반환해요. 인수 중 하나라도 NULL이면 NULL을 반환해요. 곱이 부호 있는 64비트 정수에 들어가지 않으면 정수 오버플로 오류가 발생해요.
SELECT lcm(4, 6); -- 12
SELECT lcm(-4, 6); -- 12
SELECT lcm(5, 0); -- 0
SELECT lcm(NULL, 7); -- NULL
floor()
floor(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: INTEGER. X보다 크지 않은 가장 큰 정수.
SELECT floor(3.7); -- 3
SELECT floor(-3.2); -- -4
SELECT floor(5.0); -- 5
ln()
ln(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
0보다 큰 값 |
반환: REAL. X의 자연로그(밑 e). X \<= 0이면 NULL.
SELECT ln(1); -- 0.0
SELECT ln(exp(1)); -- 1.0
SELECT ln(2); -- 0.6931471805599453
log()
log(X)
log(B, X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
0보다 큰 값 |
B |
REAL or INTEGER |
밑. 0보다 크고 1이 아니어야 해요 (선택) |
반환: REAL. 인수가 하나면 X의 자연로그를 반환해요 (ln(X)와 동일). 인수가 두 개면 밑 B인 X의 로그를 반환해요.
SELECT log(10); -- 2.302585... (natural log)
SELECT log(10, 100); -- 2.0 (log base 10 of 100)
SELECT log(2, 256); -- 8.0 (log base 2 of 256)
log10()
log10(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
0보다 큰 값 |
반환: REAL. X의 상용로그(밑 10). X \<= 0이면 NULL.
SELECT log10(100); -- 2.0
SELECT log10(1000); -- 3.0
log2()
log2(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
0보다 큰 값 |
반환: REAL. X의 밑 2 로그. X \<= 0이면 NULL.
SELECT log2(256); -- 8.0
SELECT log2(1024); -- 10.0
mod()
mod(X, Y)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
피제수 |
Y |
REAL or INTEGER |
제수 |
반환: REAL. X를 Y로 나눈 나머지. Y가 0이면 NULL.
SELECT mod(10, 3); -- 1.0
SELECT mod(10.5, 3); -- 1.5
SELECT mod(-10, 3); -- -1.0
pi()
pi()
매개변수를 받지 않아요.
반환: REAL. 수학 상수 파이 (3.141592653589793).
SELECT pi(); -- 3.141592653589793
SELECT 2 * pi() * 5; -- 31.41592653589793 (circumference of circle with radius 5)
pow() / power()
pow(X, Y)
power(X, Y)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
밑 |
Y |
REAL or INTEGER |
지수 |
반환: REAL. X의 Y승.
SELECT pow(2, 10); -- 1024.0
SELECT power(3, 3); -- 27.0
SELECT pow(100, 0.5); -- 10.0 (square root)
radians()
radians(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
도(degree) 각도 |
반환: REAL. 도에서 라디안으로 변환된 X.
SELECT radians(180); -- 3.141592653589793
SELECT radians(90); -- 1.5707963267948966
sign()
sign(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: INTEGER. X가 음수면 -1, 0이면 0, 양수면 +1. X가 NULL이면 NULL.
SELECT sign(-42); -- -1
SELECT sign(0); -- 0
SELECT sign(3.14); -- 1
sin()
sin(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
라디안 각도 |
반환: REAL. X의 사인.
sinh()
sinh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: REAL. X의 쌍곡선 사인.
sqrt()
sqrt(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
0 이상의 값 |
반환: REAL. X의 제곱근. X가 음수면 NULL.
SELECT sqrt(144); -- 12.0
SELECT sqrt(2); -- 1.4142135623730951
tan()
tan(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
라디안 각도 |
반환: REAL. X의 탄젠트.
tanh()
tanh(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: REAL. X의 쌍곡선 탄젠트. 결과는 항상 (-1.0, 1.0) 범위에 있어요.
trunc()
trunc(X)
| 매개변수 |
타입 |
설명 |
X |
REAL or INTEGER |
모든 수치 값 |
반환: INTEGER. 소수 자릿수를 제거한 X의 정수부. 0쪽으로 절단해요.
SELECT trunc(3.7); -- 3
SELECT trunc(-3.7); -- -3
SELECT trunc(5.0); -- 5
예제
삼각법
-- Sine and cosine of 45 degrees
SELECT sin(radians(45)); -- 0.7071067811865475
SELECT cos(radians(45)); -- 0.7071067811865476
-- Angle from coordinates
SELECT degrees(atan2(1, 1)); -- 45.0
-- Verify the Pythagorean identity: sin^2 + cos^2 = 1
SELECT pow(sin(1.0), 2) + pow(cos(1.0), 2); -- 1.0
반올림
-- Different rounding behaviors
SELECT ceil(2.3), floor(2.3), trunc(2.3);
-- 3, 2, 2
SELECT ceil(-2.3), floor(-2.3), trunc(-2.3);
-- -2, -3, -2
로그
-- Compute the number of bits needed to represent N
SELECT ceil(log2(1000)); -- 10
-- Decibel conversion
SELECT 10 * log10(100); -- 20.0
-- Verify log identities
SELECT ln(exp(5)); -- 5.0
거리 계산
-- Euclidean distance between two points
SELECT sqrt(pow(3 - 0, 2) + pow(4 - 0, 2));
-- 5.0 (3-4-5 triangle)
더 알아보기 (Learn more)