IP주소 범위검색에 대해서 질문드립니다. 0 6 4,560

by InSilence [SQL Query] [2011.02.23 16:35:58]


테이블에 IP주소가

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13

이런식으로 IP주소가 들어가 있습니다.

범위를 지정해서 IP주소를 불러 올려고 하는데요..

    SELECT *
   FROM  ATIT_IPSAYONG_M
 WHERE  replace(IPJUSO,'.') BETWEEN replace('192.168.0.1','.') AND replace('192.168.0.3','.')

이런식으로 하면 192.168.0.1~3만 나와야 하는데 값이 제대로 나오지가 않네요 ㅠㅠ

SELECT *
   FROM  ATIT_IPSAYONG_M
 WHERE  to_char(replace(IPJUSO,'.'),'000000000000') BETWEEN to_char(replace('192.168.0.1','.'),'000000000000') AND to_char(replace('192.168.0.3','.'),'000000000000')

이런 식으로 하면 192.168.0.1~3까지 나오지만

SELECT *
   FROM  ATIT_IPSAYONG_M
 WHERE  to_char(replace(IPJUSO,'.'),'000000000000') BETWEEN to_char(replace('255.255.3.9','.'),'000000000000') AND to_char(replace('255.255.3.65','.'),'000000000000')

이런식으로 검색하면 192.168.0.X 번대가 조회가 되네요..

어떻게 해야 제대로 된 검색을 할 수 있을지 고수분들의 조언이 필요합니다.

by camela [2011.02.23 16:58:15]
SELECT *
FROM ATIT_IPSAYONG_M
WHERE to_number(replace(IPJUSO,'.')) BETWEEN to_number(replace('192.168.0.1','.')) AND to_number(replace('192.168.0.3','.'))

by 채용근 [2011.02.23 17:12:02]
자리수가 틀리면 원하는 결과가 틀려집니다.

같은 범위안에 있는지 확인 하려면 Ip '.'구분별로 잘라서 between 하셔야 할듯합니다.

by InSilence [2011.02.23 17:12:20]
위에분 정말 답변 감사합니다. 하지만
아래쿼리로 검색하면 192.168이 검색이 되네요 ㅠㅠ

SELECT *
FROM ATIT_IPSAYONG_M
WHERE to_number(replace(IPJUSO,'.')) BETWEEN to_number(replace('255.255.3.9','.')) AND to_number(replace('255.255.3.65','.'));

by 채용근 [2011.02.23 17:12:54]
아니면 3자리씩 맞춰서 ip를 만드는 방법도 있습니다.

by InSilence [2011.02.23 18:03:54]
결국 펑션 만들어서 3자리로 맞춘다음에 검색했습니다.

by 마농 [2011.02.23 18:49:35]
IP 정렬에 대한 퀴즈입니다. 참고하세요.
http://www.gurubee.net/article/47497
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입