Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL INTERVAL() 함수의 첫 번째 인수가 NULL이면 어떤 값이 반환될까?

MySQL에서 INTERVAL() 함수의 첫 번째 인수가 NULL이면 항상 -1을 반환합니다. 다음 예제를 통해 직접 확인해 보겠습니다.

mysql> Select INTERVAL(NULL,20,32,38,40,50,55);
+--------------------------------------+
| INTERVAL(NULL,20,32,38,40,50,55)     |
+--------------------------------------+
| -1                                   |
+--------------------------------------+
1 row in set (0.00 sec)

나머지 인수에 NULL이 포함된 경우에도 -1 반환

흥미로운 점은 첫 번째 인수 외에 다른 인수들 중 일부가 NULL이더라도, 첫 번째 인수가 NULL이라면 결과는 마찬가지로 -1이라는 것입니다. 즉, 첫 번째 인수의 NULL 여부가 반환값을 결정하는 핵심 조건입니다.

mysql> Select INTERVAL(NULL,20,32,NULL,40,50,NULL);
+--------------------------------------+
| INTERVAL(NULL,20,32,NULL,40,50,NULL) |
+--------------------------------------+
| -1                                   |
+--------------------------------------+
1 row in set (0.00 sec)

첫 번째 인수가 NULL이 아닌 경우의 동작

반면 첫 번째 인수가 NULL이 아니고 나머지 인수 중 하나 이상이 NULL이라면 상황이 달라집니다. 이 경우 INTERVAL() 함수는 첫 번째 인수보다 큰 숫자가 존재하기 전까지의 인덱스 위치를 기준으로 값을 반환합니다.

mysql> Select INTERVAL(50,20,NULL,55,40,50,NULL);
+------------------------------------+
| INTERVAL(50,20,NULL,55,40,50,NULL) |
+------------------------------------+
| 2                                  |
+------------------------------------+
1 row in set (0.00 sec)

위 예제에서 첫 번째 인수는 50이고, 두 번째 인수인 20은 50보다 작으므로 비교가 계속 진행됩니다. 세 번째 위치의 NULL 이후 네 번째 인수 55가 50보다 크기 때문에 최종적으로 인덱스 값 2가 반환되는 것입니다.

정리하면, INTERVAL() 함수를 사용할 때는 첫 번째 인수에 NULL이 들어가면 무조건 -1이 반환된다는 점을 기억해야 하며, NULL이 포함된 데이터를 다룰 때는 이러한 동작 방식을 반드시 고려해야 정확한 결과를 얻을 수 있습니다.