2009-07-07 20 views
0

我有一個MS SQLServer 2005表,其中包括一個ipaddress列,並且我想通過子網對條目進行計數。通過子網查詢ipaddresses

不幸的是,ip地址欄是一個像樣本數據爲varchar: 192.168.10.20 10.1.2.3

我認爲最好的辦法是將ip地址轉換爲整數,然後我可以申請相應的位掩碼。

有沒有關於如何獲得一個4個字節的字符串到一個整數的建議?

回答

0

你也可以使用PARSENAME函數來做到這一點,因爲它是顯示here

1

要將4個八進制點符號轉換爲BIGINT,我們可以執行以下操作。

DECLARE @IP CHAR(15)SET @ IP = '192.168.123.123'

選擇(CONVERT(BIGINT,PARSENAME(@ IP,1))+ CONVERT(BIGINT,PARSENAME(@ IP,2 ))* 256 + CONVERT(BIGINT,PARSENAME(@ IP,3))* 65536 + CONVERT(BIGINT,PARSENAME(@ IP,4))* 16777216)

從那裏這是一個非常簡單的事情和即用4294967040(255.255.255.0)得到/ 24子網

感謝Less Than Dot的代碼。