有IP地址查询表 IP :
startIP varchar 50
endIP varchar 50
local varchar 100
其中 起始IP 和 结束IP 均为 点分十进制的IP地址 (如 202.12.34.56)
为了便于比较,我又在此表加了两项
startIP varchar 50
endIP varchar 50
start long
end long
local varchar 100
我想 通过SQL Server 把startIP 转换为 数值后保持到相应的start, endIP 转换为
end ,大家能否提供一条 sql 语句 ,执行完成这个修改,谢谢
startIP varchar 50
endIP varchar 50
local varchar 100
其中 起始IP 和 结束IP 均为 点分十进制的IP地址 (如 202.12.34.56)
为了便于比较,我又在此表加了两项
startIP varchar 50
endIP varchar 50
start long
end long
local varchar 100
我想 通过SQL Server 把startIP 转换为 数值后保持到相应的start, endIP 转换为
end ,大家能否提供一条 sql 语句 ,执行完成这个修改,谢谢
解决方案 »
- 如何复制一个数据库?
- 这个拼串sql怎样写?大侠帮帮忙。
- 急!求一条sql查询语句
- 求关于过期的一个SQL语句
- sal中WHERE子句元组查询的问题?急
- "select id+1 from usertable"如果usertable中没有记录就返回1,如何做到?
- 请教高手,来看看select相关的?急啊。。。
- 关于sqlexpress一个奇怪的问题
- 求救呀?
- ★★★★★多表不定列的统计该的SQL语句该怎么写???
- hibernate连sqlserver2000数据库偶尔出现 Cannot open connection
- 在安装sql server2000的服务器上,运行"服务器网络实用工具"与运行"客户端网络实用工具",二者有区别吗?(仅就一台服务器而言,不考虑客户机)
returns float
as
begin
declare @index int
declare @Ip_1 int
declare @flag int
declare @ipnum float
set @index=1
set @flag=4
set @ipnum=0
while (@flag>1 )
begin
set @flag=@flag-1
set @index=CHARINDEX('.',@ip)
set @Ip_1=left(@ip,@index-1)
set @ip=right(@ip,len(@ip)-@index)
set @ipnum=@ipnum+@Ip_1*cast(power(256,@flag) as float)
end
if charindex(':',@ip)<>0
begin
set @index=charindex(':',@ip)
set @ip_1=left(@ip,@index-1)
set @ipnum=@ipnum+@ip_1
end
else
set @ipnum=@ipnum+@ip-1
return(@ipnum)end
returns bigint
as
begindeclare @s varchar(50)
select @s='',@ip=@ip+'.'
while charindex('.',@ip)>0
begin
select @s=@s+left(@ip,charindex('.',@ip)-1),
@ip=stuff(@ip,1,charindex('.',@ip),'')
end
return convert(bigint,@s)
endselect dbo.test('202.12.34.60')
当然我自己也试着写写,因为我刚开始接触 sql,呵呵
use ipData
go
update dbo.ip
set startp=dbo.ip_num(startip),
endp=dbo.ip_num(endip);
go
select * from ip