線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1734
推到 Plurk!
推到 Facebook!

關於IP範圍資料查詢

答題得分者是:pcboy
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-12 15:13:09 IP:220.141.xxx.xxx 訂閱
各位大大請教個問題,
我想找一個區段的ip位置,如200.0.0.0~254.254.254.254範圍,

我用sql語法去做查詢的時候,查詢語法如下

SELECT FindIP FROM IPData WHERE FindIP between '200.0.0.0' And '254.254.254.254'

因為ip位置是以文字欄位存放,所以查詢結果也會會將20.x.x.x~25.x.x.x的範圍也會找出來,
但我只要200.0.0.0~254.254.254.254範圍內的結果,
有何方法可以讓資料查詢的結果正確一點嗎?

爬了好久的文,找不到類似的文章,只好上來發問了,不好意思..
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-12 15:25:09 IP:61.220.xxx.xxx 訂閱
幾種做法可以考慮
1. 將IP 的 4 個數值分別存在不同的欄位中
2.使用別種方式儲存 IP 值
例如 200.0.0.0 => C8000000 , 200.255.255.255 => C8FFFFFF
3.把所有筆的 IP 值讀取後, 用程式分析比對符合的
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-12 16:28:43 IP:61.30.xxx.xxx 訂閱
有一種方式是MSSQL的用法
select IP from IPDATA where IP LIKE '2[0-5][0-5].[0-2][0-5][0-5].[0-2][0-5][0-5].[0-2][0-5][0-5]'
表示是找字串固定開頭=2
但是第二的字元是[0-5]=0,1,2,3,4,5
後略.....
但是指定字元的話,不會找到200.0.0.0而是找到200.000.000.000

===================引 用 tahoo 文 章===================
各位大大請教個問題,
我想找一個區段的ip位置,如200.0.0.0~254.254.254.254範圍,

我用sql語法去做查詢的時候,查詢語法如下

SELECT FindIP FROM IPData WHERE FindIP? between '200.0.0.0' And '254.254.254.254'

因為ip位置是以文字欄位存放,所以查詢結果也會會將20.x.x.x~25.x.x.x的範圍也會找出來,
但我只要200.0.0.0~254.254.254.254範圍內的結果,
有何方法可以讓資料查詢的結果正確一點嗎?

爬了好久的文,找不到類似的文章,只好上來發問了,不好意思..
------
======================
昏睡~
不昏睡~
不由昏睡~
編輯記錄
ko 重新編輯於 2007-07-12 16:30:17, 註解 無‧
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-13 10:15:57 IP:220.141.xxx.xxx 訂閱
謝謝PCBOY大大,
我程式己經做好了,
目前的查詢結果都是正確的,
我是用您建議的第二個方法,
建立二個16進位的欄位,
再用此進行比對,
謝謝您!!

===================引 用 pcboy 文 章===================
幾種做法可以考慮
1. 將IP 的 4 個數值分別存在不同的欄位中
2.使用別種方式儲存 IP 值
例如 200.0.0.0 => C8000000 , 200.255.255.255 => C8FFFFFF
3.把所有筆的 IP 值讀取後, 用程式分析比對符合的
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-13 10:17:37 IP:220.141.xxx.xxx 訂閱
先謝謝您的解答,
但這方法有些複雜,
我還是採用PCBOY大的第二個方法,
謝啦!!

===================引 用 ko 文 章===================
有一種方式是MSSQL的用法
select IP from IPDATA where IP LIKE '2[0-5][0-5].[0-2][0-5][0-5].[0-2][0-5][0-5].[0-2][0-5][0-5]'
表示是找字串固定開頭=2
但是第二的字元是[0-5]=0,1,2,3,4,5
後略.....
但是指定字元的話,不會找到200.0.0.0而是找到200.000.000.000

===================引 用 tahoo 文 章===================
各位大大請教個問題,
我想找一個區段的ip位置,如200.0.0.0~254.254.254.254範圍,

我用sql語法去做查詢的時候,查詢語法如下

SELECT FindIP FROM IPData WHERE FindIP? between '200.0.0.0' And '254.254.254.254'

因為ip位置是以文字欄位存放,所以查詢結果也會會將20.x.x.x~25.x.x.x的範圍也會找出來,
但我只要200.0.0.0~254.254.254.254範圍內的結果,
有何方法可以讓資料查詢的結果正確一點嗎?

爬了好久的文,找不到類似的文章,只好上來發問了,不好意思..
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-13 10:26:02 IP:61.220.xxx.xxx 訂閱
不一定要轉16進位, 也可用10進位, 或其他方便比對的表示法來儲存
200.0.0.0 => 200000000000
200.255.255.255 => 200255255255

200.0.0.0 => 200.000.000.000
200.255.255.255 => 200.255.255.255
雖然要多花幾個byte, 但是可能比看16進位習慣

200.000.000.000 要顯示的時候, 用字串切割 (分隔字元是 . ), 切成 200 000 000 000
然後用字串轉數字
200 => 200
000 => 0
轉換顯示可以另外寫個副程式處理

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-07-02 9:16:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!