IP不够3位补0,去除小数点
1.例如传入ip为 192.168.0.1
转为:192168000001
传入ip为 192.168.10.0
转为:192168010000
若传入:888.888.888.888
报错误不符合ip地址规则
------------------
写入数据库
test表 假设只有一个字段ip bigint
------写入结果------------
ip
192168000001
192168010000
2.查询数据库中的数据则转为标准ip地址形式
select ip
显示结果为
192.168.0.1
192.168.10.0
请问1和2用存储过程如何写?
1.例如传入ip为 192.168.0.1
转为:192168000001
传入ip为 192.168.10.0
转为:192168010000
若传入:888.888.888.888
报错误不符合ip地址规则
------------------
写入数据库
test表 假设只有一个字段ip bigint
------写入结果------------
ip
192168000001
192168010000
2.查询数据库中的数据则转为标准ip地址形式
select ip
显示结果为
192.168.0.1
192.168.10.0
请问1和2用存储过程如何写?
select right('000'+parsename(@str,4),3)+
right('000'+parsename(@str,3),3)+
right('000'+parsename(@str,2),3)+
right('000'+parsename(@str,1),3)
set @str='192168000001'select rtrim(substring(@str,1,3)*1)+'.'+
rtrim(substring(@str,4,3)*1)+'.'+
rtrim(substring(@str,7,3)*1)+'.'+
rtrim(substring(@str,10,3)*1)
CREATE TABLE t1
(
ip VARCHAR(20)
)
INSERT INTO t1
SELECT '49.140.255.255' UNION ALL
SELECT '58.21.0.0'
SELECT * FROM t1SELECT RIGHT('000'+PARSENAME(ip,4),3)+
RIGHT('000'+PARSENAME(ip,3),3)+
RIGHT('000'+PARSENAME(ip,2),3)+
RIGHT('000'+PARSENAME(ip,1),3)
FROM t1----------------------
(无列名)
049140255255
058021000000
inet_aton:将ip地址转换成数字型
inet_ntoa:将数字型转换成ip地址