MySQL의 INTERVAL() 함수는 여러 인자 중에서 첫 번째 인자(N)보다 큰 값이 처음 등장하는 위치의 인덱스를 반환하는 함수입니다. 주어진 값이 어느 구간에 속하는지 빠르게 판별해야 할 때 유용하게 활용됩니다.
기본 문법
INTERVAL(N, N1, N2, N3, ...)
함수는 첫 번째 인자인 N을 나머지 인자들(N1, N2, N3...)과 차례대로 비교합니다. 모든 인자는 정수로 취급되며, 비교 결과는 다음과 같은 규칙으로 반환됩니다.
- N < N1 이면 → 0 반환
- N1 ≤ N < N2 이면 → 1 반환
- N2 ≤ N < N3 이면 → 2 반환 (이후 인자도 같은 방식으로 반복)
즉, 인덱싱은 두 번째 숫자인 N1부터 시작하며, 첫 번째 위치의 인덱스 값은 0입니다. 참고로 INTERVAL() 함수는 내부적으로 이진 탐색(binary search) 방식으로 동작하기 때문에 인자가 많아도 매우 빠른 성능을 보여줍니다.
사용 예제
mysql> Select INTERVAL(50,20,32,38,40,50,55); +--------------------------------+ | INTERVAL(50,20,32,38,40,50,55) | +--------------------------------+ | 5 | +--------------------------------+ 1 row in set (0.00 sec)
위 쿼리의 결과가 5로 출력된 이유를 살펴보겠습니다. 첫 번째 인자인 50보다 큰 값은 마지막 인자인 55뿐입니다. 55의 위치는 두 번째 인자(N1)부터 시작하는 인덱스 기준으로 5번째이므로, 함수는 5를 반환하게 됩니다.
이처럼 INTERVAL() 함수는 특정 수치가 어느 경계값 사이에 속하는지 판별할 때 간결하고 효율적인 해결책을 제공합니다. 예를 들어 점수 구간 분류, 나이대 그룹화 등의 로직을 CASE문 없이 한 줄로 처리할 수 있다는 장점이 있습니다.