库中有一列存放ip地址 但是所有的ip地址都不含有"." 比如11101113 19216811 19216912121我要转成带点的 11.10.11.13这样 如何才能更准确的的截取到ip地址呢
解决方案 »
- oracle导入备份问题
- 分析函数写法
- oracle中建立唯一约束与唯一索引的区别
- 新增加的逻辑卷(裸设备的数据文件)加入到oracle某一表空间里时出错SVR4 Error: 6: No such device or address
- 请问oracel中插入的问题,急!!!!!
- job的问题?每隔十分钟执行一次存储过程该怎么写呢?
- 求高手看看,这个存储过程,为什么单步执行没问题,但是运行的时候数据库就死掉了!同事说可能是死循环,但是单步执行没问题啊!
- 關於oracle9i數據庫狀態切換的問題?在線等!
- 研究oracle数据库有个基础问题。。。。
- esb是个什么东西?
- 怎么用union all 实现如下效果
- 不能用作赋值目标
标题:字符串IP地址和IP数值互换函数
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2009-07-17
地点:新疆乌鲁木齐
*/
--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.f_IPtoInt(@ip char(15))RETURNS bigint
AS
BEGIN
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
) a
RETURN(@re)
END
GOselect 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)
AS
BEGIN
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
) a
RETURN(STUFF(@re , 1 , 1 , ''))
END
GOSELECT dbo.f_InttoIP(3232240819) ip_varchar/*
ip_varchar
---------------
192.168.20.179(所影响的行数为 1 行)
*/DROP FUNCTION dbo.f_InttoIP