<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Oracle中IP地址和掩碼轉換成CIDR格式

      遇到的問題如下:數據庫中存儲了IP地址,以及IP地址掩碼,需要將他們轉化成CIDR格式的,并且不僅僅是將掩碼轉化成CIDR對應的數字的問題,需要將原有的IP地址轉化成對應的網絡地址,例如IP地址是58.247.221.238,掩碼是255.255.255.252,需要將其轉化為58.247.221.236/30。
      解決方案:我們知道,將IP地址和掩碼通過位與函數就能得到對應的網絡地址.Google一下,找到了將IPv4地址轉成數字以及轉化回來的函數。有了這兩個函數,再利用Oracle 自帶的bitand函數,問題就解決了。可以先將IP地址和掩碼通過字符串轉IP的函數轉成數字,然后通過位與運算就能得到相應的網絡地址對應的數字,再通過數字轉字符串的功能,即得到對應的網絡地址。至于/后面CIDR的數字,可以通過導入一張掩碼和CIDR數字的對應表得到,不在詳述.
      實際例子如下: 返回58.247.221.236
      Sql代碼
      select inttoip(BITAND(dottedQuadToNumber('58.247.221.238'),
      ottedQuadToNumber('255.255.255.252'))) from dual
      附: 將字符串轉成數字的函數:
      Sql代碼
    CREATE OR REPLACE function dottedQuadToNumber ( dottedQuad IN VARCHAR2) return number is
    Result NUMBER;
    begin
    Result:= (substr(dottedQuad ,
    1,
    (instr(dottedQuad , '.', 1, 1 ) - 1))
    * 256 * 256 * 256
    ) +
    (substr(dottedQuad ,
    instr(dottedQuad , '.', 1, 1 ) + 1,
    instr(dottedQuad , '.', 1, 2 ) -
    instr(dottedQuad , '.', 1, 1 ) - 1) * 256 * 256
    ) +
    (substr(dottedQuad ,
    instr(dottedQuad , '.', 1, 2 ) + 1,
    instr(dottedQuad , '.', 1, 3 ) -
    instr(dottedQuad , '.', 1, 2 ) - 1) * 256
    ) +
    (substr(dottedQuad ,
    instr(dottedQuad , '.', 1, 3 ) + 1)
    ) ;
    return(Result );
    end dottedQuadToNumber ;
      數字轉成ip地址的函數:
      Sql代碼
    CREATE OR REPLACE function inttoip(ip_address integer) return varchar2
    deterministic
    is
    begin
    return to_char(mod(trunc(ip_address /256/ 256/256 ),256))
    || '.'|| to_char(mod(trunc(ip_address/ 256/256 ),256))
    || '.'|| to_char(mod(trunc(ip_address/ 256),256 ))
    || '.'|| to_char(mod(ip_address, 256));
    end;

    posted on 2014-08-04 09:58 順其自然EVO 閱讀(263) 評論(0)  編輯  收藏 所屬分類: 數據庫

    <2014年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲欧美在线观看| 亚洲成a人片在线不卡一二三区| 国产精品深夜福利免费观看| 国产精品免费一区二区三区四区| 亚洲av专区无码观看精品天堂| 久久久久亚洲精品无码网址| 国产精品国产自线拍免费软件| 亚洲成年人免费网站| 免费一区二区无码东京热| 国产精品日本亚洲777| 亚洲国产av美女网站| 亚洲精品无码永久在线观看你懂的 | 亚洲国产高清视频在线观看| 91麻豆精品国产自产在线观看亚洲| 日本高清免费中文字幕不卡| 在线观看特色大片免费视频| 一级毛片**不卡免费播| 亚洲色图国产精品| 亚洲人成网7777777国产 | 亚洲国产精品网站在线播放| 亚洲成人福利网站| 亚洲一区二区三区电影| 亚洲av日韩av不卡在线观看| 亚洲成色在线综合网站| 中文字幕亚洲日韩无线码| 亚洲一区二区三区在线视频| 亚洲国产精品成人一区| 亚洲精品国产精品乱码不卞| 亚洲第一永久AV网站久久精品男人的天堂AV| 日本一区二区三区日本免费| 免费看片A级毛片免费看| 日本特黄特色免费大片| 国产精品久免费的黄网站| 日本免费v片一二三区| 国产不卡免费视频| 亚洲国产精品专区在线观看| 亚洲精品国精品久久99热| 不卡一卡二卡三亚洲| 亚洲性猛交XXXX| 亚洲五月激情综合图片区| 亚洲短视频在线观看|