① sql语句查询IP段
--先构建一个转换ip地址格式的函数 以‘.’为间隔按4段拆分 每段前端补0 然后截取3位
--可将‘1.1.166.0’转换为‘001001166000’
create function convertIP (@strIP varchar(20))
returns varchar(20)
as
begin
declare @str1 varchar(6),@str2 varchar(6),@str3 varchar(6),@str4 varchar(6),
@i int,@j int,@k int,@m int
set @i=1
set @j=1
set @k=1
set @m=1
while (@i<=len(@strIP))
begin
if (substring(@strIP,@i,1)='.')
begin
if @k=1 set @str1=substring(@strIP,@m,@j-1)
if @k=2 set @str2=substring(@strIP,@m,@j-1)
if @k=3 set @str3=substring(@strIP,@m,@j-1)
set @j=1
set @m=@i+1
set @k=@k+1
end
else
set @j=@j+1
set @i=@i+1
end
set @str4=substring(@strIP,@m,@j-1)
set @str1='000'+@str1
set @str1=substring(@str1,len(@str1)-2,3)
set @str2='000'+@str2
set @str2=substring(@str2,len(@str2)-2,3)
set @str3='000'+@str3
set @str3=substring(@str3,len(@str3)-2,3)
set @str4='000'+@str4
set @str4=substring(@str4,len(@str4)-2,3)
return @str1+@str2+@str3+@str4
end
--查询ip地址为标准格式 例如'201.125.12.203'
select address from IP where dbo.convertIP(IPstart)<=dbo.convert('201.125.12.203') and dbo.convertIP(IPend)>=dbo.convertIP('201.125.12.203')
② sql中怎样为IP地址字段按大小排序在线等!
把ipAddr设置成主键试试。
③ 配置应用程序时候,连接sql数据库时用 ‘.’ 和IP地址的区别
接 SQL Server 时,指定服务器可以有多种形式:
回送地址(127.0.0.1)
回送地址(127.0.0.1)与 localhost 等效,因为在 hosts 文件中指定 localhost 指向 127.0.0.1。使用的是 TCP/IP 连接。
计算机 IP 与域名等效(除非域名指向的不是计算机 IP,而是回送地址等其它)。使用的是 TCP/IP 连接。
计算机名,这种访问容易受限制,比如有时跨网段就不行,一般没用。使用命名管理连接。
(local) 和 . 应该是等效的,至少就目前来看,没有发现什么区别。使用命名管道连接。
**local是SQL Server定义的本机别名
**localhost是TCP/IP协议中地址127.0.0.1的默认DNS名,注册在本机host文件中
TCP/IP 连接对于慢速网络效果好,需要 1433 端口开放才能连接。
④ sql IP地址 排序
select *
from iptable
order by convert(numeric(20),replace(ip字段,'.',''))
⑤ 急求:用sql判断一个IP地址,是否在指定的IP段之内
sql支持那种带点的字符串比较大小的。
你直接这样就行
select count(ip) from tb WHERE IP>'10.0.0.1' AND IP<'10.0.0.254' and ip='传进来的ip'
如果是0则不在范围内