sql查詢ip段
declare @ip as varchar(15)
set @ip = '192.168.0.0'
select * from tb where
right('00'+parsename(@ip,4),3) + '.' + right('00'+parsename(@ip,3),3) + '.' + right('00'+parsename(@ip,2),3) + '.' + right('00'+parsename(@ip,1),3)
between
right('00'+parsename(startip,4),3) + '.' + right('00'+parsename(startip,3),3) + '.' + right('00'+parsename(startip,2),3) + '.' + right('00'+parsename(startip,1),3)
andright('00'+parsename(endip,4),3) + '.' + right('00'+parsename(endip,3),3) + '.' + right('00'+parsename(endip,2),3) + '.' + right('00'+parsename(endip,1),3)
***************==ip位址與十進位制的互換*************************=
--1. 字串ip位址轉換成ip數值函式。
create function dbo.f_iptoint(@ip char(15))returns bigint
asbegin
declare @re bigint
set @re = 0
select @re = @re + left(@ip , charindex('.' , @ip + '.') - 1) * id ,
@ip = stuff(@ip , 1 , charindex('.' , @ip + '.') , '')
from
(select id = cast(16777216 as bigint)
union all select 65536
union all select 256
union all select 1
) areturn(@re)
endgo
select dbo.f_iptoint('192.168.20.179') ip_int
/*ip_int
--------------------
3232240819
(所影響的行數為 1 行)
*/drop function dbo.f_iptoint
--2. 字串ip位址轉換成ip數值函式。
create function dbo.f_inttoip(@ip bigint)returns varchar(15)
asbegin
declare @re varchar(15)
set @re = ''
select @re = @re + '.' + cast(@ip/id as varchar) , @ip = @ip % id
from
(select id = cast(16777216 as bigint)
union all select 65536
union all select 256
union all select 1
) areturn(stuff(@re , 1 , 1 , ''))
endgo
select dbo.f_inttoip(3232240819) ip_varchar
/*ip_varchar
---------------
192.168.20.179
(所影響的行數為 1 行)
*/drop function dbo.f_inttoip
如何使用SQL查詢IP位址所屬IP段
最近有個朋友說他要做的人員註冊量的統計,有兩張表,一張是使用者登錄檔,一張是ip段對應城市表。需要根據使用者註冊時的ip查詢到對應的城市,從而知道該城市有多少人註冊。其實沒什麼,關鍵是ip位址和ip段的匹配問題。一開始,我使用的是between,結果顯然是不行的。最後我想到用函式直接將192.168...
點分十進位制字串IP與十進位制整數相互轉換方法
點分十進位制字串ip與十進位制整數相互轉換方法 param args public static void main string args string ip str 255.255.255.255 string array ip str.split long ip long long.parse...
ip位址二進位制轉十進位制
每個ip有4組8位二進位制組成,8位二進位制從左邊算起的第1位是2的7次方 128 第2位是2的6次方 64 第3位是2的5次方 32 第4位是2的4次方 16 第5位是2的3次方 8 第6位是2的2次方 4 第7位是2的1次方 2 第8位是2的0次方 1。以11000000.10101000.01...