2017-01-02 1 views
0

국가 IP 주소가있는 데이터베이스가 있습니다.IP 주소 - MySQL 데이터 유형

내 테이블에는 두 개의 필드가 있습니다. 나는이 같은 테이블에 쿼리 할 때

LBound, tinyint 
UBound, tinyint 

는 :

12.205.104.0 13.16.137.9 
129.250.2.43 129.250.3.137 
129.250.16.47 129.253.255.255 

하지만 만 반환 할 :

129.250.16.47 129.253.255.255 

이인가

select * from allowed where '129.250.224.1' BETWEEN lbound AND ubound 

을 나는 3 개 결과를 얻을 수 데이터 유형 문제? 그렇다면 어떤 데이터 유형을 사용해야합니까?

답변

1

당신은 사용할 수

http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html

INETT_ATON 

INET_NTOA 

예를 들면 : 당신이 제대로 다수의 IP를 변환 할 수 있습니다 이런 식으로

SELECT INET_ATON('10.0.5.9'); 
    -> 167773449 

필터를 올바르게 입력하십시오.

+0

어떻게 내가이 함께 사용합니까? die ("select * from allowed from '$ ADDRESS'lbound and ubound"); – RickyD

+0

Lbound & UBound에서 어떻게 사용합니까? – RickyD

+0

NM. 알았다. 감사. – RickyD

0

inet_aton 기능을 사용하면 IP 주소 텍스트를 숫자 값으로 변환하여 비교할 수 있습니다. 이처럼 :

SELECT * 
FROM allowed 
WHERE inet_aton('129.250.224.1') BETWEEN inet_aton(lbound) AND inet_aton(ubound); 

IP 주소를 저장하는 데 사용할 유형에 관해서는, 나는 UNSIGNED INT 또는 VARBINARY (16)를 사용하는 것입니다.


관련 질문 -