본문으로 건너뛰기
최종 수정: 에

IS_IP_ADDRESS_IN_RANGE

설명​

지정한 IP 주소가 주어진 CIDR 네트워크 범위에 속하는지 확인합니다. IPv4와 IPv6 주소를 모두 지원합니다.

구문​

IS_IP_ADDRESS_IN_RANGE(<ip_address>, <cidr_range>)

매개변수​

  • <ip_address>: 확인할 IP 주소(IPv4, IPv6 타입 또는 문자열)
  • <cidr_range>: CIDR 네트워크 범위(문자열 형식, 예: "192.168.1.0/24")

반환값​

반환 타입: BOOLEAN

반환값의 의미:

  • 1 반환: IP 주소가 지정한 CIDR 범위에 속함을 나타냅니다
  • 0 반환: IP 주소가 지정한 CIDR 범위에 속하지 않음을 나타냅니다
  • 입력이 NULL이면 NULL을 반환합니다

사용 시 참고 사항​

  • IPv4와 IPv6 주소를 모두 확인할 수 있습니다
  • CIDR 범위는 유효한 형식이어야 합니다(예: "192.168.1.0/24" 또는 "2001:db8::/64")
  • inverted index 최적화를 지원하며, CIDR 매개변수가 상수이면 인덱스를 사용해 처리 속도를 높일 수 있습니다
  • CIDR 형식이 유효하지 않으면 0을 반환합니다
  • 입력 매개변수가 NULL이면 NULL을 반환합니다

예제​

IPv4 주소가 지정한 네트워크 구간에 속하는지 확인합니다.

SELECT is_ip_address_in_range(to_ipv4('192.168.1.100'), '192.168.1.0/24') as in_range;
+----------+
| in_range |
+----------+
| 1 |
+----------+

IPv6 주소가 지정한 네트워크 구간에 속하는지 확인합니다.

SELECT is_ip_address_in_range(INET6_ATON('2001:db8::100'), '2001:db8::/64') as in_range;
+----------+
| in_range |
+----------+
| 1 |
+----------+

여러 주소가 지정한 네트워크 구간에 속하는지 확인합니다.

SELECT 
is_ip_address_in_range(to_ipv4('192.168.1.100'), '192.168.1.0/24') as in_192_168_1,
is_ip_address_in_range(to_ipv4('192.168.2.100'), '192.168.1.0/24') as in_192_168_2,
is_ip_address_in_range(to_ipv4('10.0.0.1'), '192.168.1.0/24') as in_10_0_0;
+-------------+-------------+----------+
| in_192_168_1| in_192_168_2| in_10_0_0|
+-------------+-------------+----------+
| 1 | 0 | 0 |
+-------------+-------------+----------+

CIDR 접두사 길이가 서로 다른 범위를 확인합니다.

SELECT 
is_ip_address_in_range(to_ipv4('192.168.1.100'), '192.168.0.0/16') as in_16,
is_ip_address_in_range(to_ipv4('192.168.1.100'), '192.168.1.0/24') as in_24,
is_ip_address_in_range(to_ipv4('192.168.1.100'), '192.168.1.100/32') as in_32;
+--------+--------+--------+
| in_16 | in_24 | in_32 |
+--------+--------+--------+
| 1 | 1 | 1 |
+--------+--------+--------+

CIDR 형식이 유효하지 않으면 0을 반환합니다.

SELECT is_ip_address_in_range(to_ipv4('192.168.1.100'), 'invalid-cidr') as in_range;
+----------+
| in_range |
+----------+
| 0 |
+----------+

입력 매개변수가 NULL이면 NULL을 반환합니다.

SELECT is_ip_address_in_range(NULL, '192.168.1.0/24') as null_ip;
+---------+
| null_ip |
+---------+
| NULL |
+---------+

SELECT is_ip_address_in_range(to_ipv4('192.168.1.100'), NULL) as null_cidr;
+-----------+
| null_cidr |
+-----------+
| NULL |
+-----------+

SELECT is_ip_address_in_range(NULL, NULL) as both_null;
+-----------+
| both_null |
+-----------+
| NULL |
+-----------+

키워드​

IS_IP_ADDRESS_IN_RANGE