库中有一列存放ip地址 但是所有的ip地址都不含有"." 比如11101113 19216811 19216912121我要转成带点的 11.10.11.13这样 如何才能更准确的的截取到ip地址呢

解决方案 »

  1.   

    这种格式貌似不能确定准确的IP内容.给你点SQL SERVER的资料,参考一下:/*
    标题:字符串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
      

  2.   

    只能用substr函数和字符连接函数||进行逐个字符的连接了
      

  3.   

    http://bbs.csdn.net/topics/390517109?page=1#post-395032957  我有个sqlserver的脚本 转换起来 老出错