永发信息网

MS SQL 将IP全部转换为十进制,存到一个新表里面问题?

答案:1  悬赏:0  手机版
解决时间 2021-07-18 01:41
  • 提问者网友:容嬷嬷拿针来
  • 2021-07-17 20:24

没法解决问题,后面是 完整的代码页页面地址 http://www.cnrui.cn/blog/article/204.htm
这个页面里的这段代码怎么修改 :
-- 将地区提出
Update [BasName].[dbo].[IP]
SET [local] = SUBSTRINg([country],CHARINDEX(' ',[country],1)+1,len([country]))

-- 存为国家或省份
Update [BasName].[dbo].[IP]
SET [country] = SUBSTRINg([country],0,CHARINDEX(' ',[country],1))
上面的代码在怎么修改改成下面的格式
1,-- 将地区提出
修改为不提出

2,-- 存为国家或省份 如:四川省
修改为国家省份地区详细显示 。。如:四川省内江市资中县 电信ADSL 这样的显示或者原表里的这个地方的地址数据不操作只把ip数据修改成十进制显示就好
原表是下面的式样
221.237.213.0 221.237.216.255 四川省 电信
221.237.217.0 221.237.217.255 四川省眉山市 电信
221.237.218.0 221.237.221.255 四川省 电信
221.237.222.0 221.237.222.255 四川省遂宁市 电信
221.237.223.0 221.237.225.255 四川省 电信
221.237.226.0 221.237.226.255 四川省遂宁市 电信

修改成新原表是下面的式样十进制ip
xxxxxxxxxx xxxxxxxxx 电信.四川省遂宁市
xxxxxxxxxx xxxxxxxxx 电信.四川省
xxxxxxxxxx xxxxxxxxx 电信.四川省遂宁市

代码怎么修改 请大侠指教!!

最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-07-17 21:57
CREATE FUNCTION dbo.IPAddressToInteger (@IP AS VARCHAr(15))RETURNS BIGINTASBEGIN RETURN (CONVERT(BIGINT, PARSENAME(@IP,1)) + CONVERT(BIGINT, PARSENAME(@IP,2)) * 256 + CONVERT(BIGINT, PARSENAME(@IP,3)) * 65536 + CONVERT(BIGINT, PARSENAME(@IP,4)) * 16777216)ENDGO
Update [BasName].[dbo].[IP] Set [StartIP] = ado.IPAddressToInteger([StartIP]), [EndIP] = ado.IPAddressToInteger([EndIP])
DROP FUNCTION dbo.IPAddressToInteger
主要是IP的转换,试下吧,有问题再帮你调
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯