我有一個MS SQLServer 2005表,其中包括一個ipaddress列,並且我想通過子網對條目進行計數。通過子網查詢ipaddresses
不幸的是,ip地址欄是一個像樣本數據爲varchar: 192.168.10.20 10.1.2.3
我認爲最好的辦法是將ip地址轉換爲整數,然後我可以申請相應的位掩碼。
有沒有關於如何獲得一個4個字節的字符串到一個整數的建議?
我有一個MS SQLServer 2005表,其中包括一個ipaddress列,並且我想通過子網對條目進行計數。通過子網查詢ipaddresses
不幸的是,ip地址欄是一個像樣本數據爲varchar: 192.168.10.20 10.1.2.3
我認爲最好的辦法是將ip地址轉換爲整數,然後我可以申請相應的位掩碼。
有沒有關於如何獲得一個4個字節的字符串到一個整數的建議?
你也可以使用PARSENAME函數來做到這一點,因爲它是顯示here。
要將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的代碼。