美文网首页
达梦DM8上的inet_aton函数实现

达梦DM8上的inet_aton函数实现

作者: 旻璿 | 来源:发表于2020-08-27 08:11 被阅读0次
    CREATE OR REPLACE FUNCTION inet_aton(ips in varchar) RETURN number AS
    rtn number;
    r varchar;
    arg1 varchar;
    arg2 varchar;
    arg3 varchar;
    arg4 varchar;
    BEGIN
    
    r := '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})';
    arg1 := '\1';
    arg2 := '\2';
    arg3 := '\3';
    arg4 := '\4';
    execute immediate 'select to_number(regexp_replace(ip, '''||r||''', '''||arg1||''')) * 16777216 + to_number(regexp_replace(ip, '''||r||''', '''||arg2||''')) * 65536 + to_number(regexp_replace(ip, '''||r||''', '''||arg3||''')) * 256 + to_number(regexp_replace(ip, '''||r||''', '''||arg4||'''))  as ip_number from (select '''||ips||''' as ip from dual)'
    
    into rtn;
    
    return rtn;
    
    END;
    /
    

    测试语句:select inet_aton('192.168.133.254') from dual;,结果如下:

    [dmdba@192 bin]$ ./disql 
    disql V8
    用户名:SYSDBA
    密码:
    
    服务器[LOCALHOST:5236]:处于普通打开状态
    登录使用时间: 9.080(毫秒)
    SQL> select inet_aton('192.168.133.254') from dual;
    
    行号     INET_ATON('192.168.133.254')
    ---------- ----------------------------
    1          3232269822
    
    已用时间: 7.416(毫秒). 执行号:3157.
    

    相关文章

      网友评论

          本文标题:达梦DM8上的inet_aton函数实现

          本文链接:https://www.haomeiwen.com/subject/qawqsktx.html