给你一个建议,每个点之间都补全3位,取出来的时候,用to_number就可以了。

解决方案 »

  1.   

    select 
    lpad(substr('192.168.1.2',1,instr('192.168.1.2','.',1,1) -1),3,'0') as ip1,
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,1) + 1,instr('192.168.1.2','.',1,2) -instr('192.168.1.2','.',1,1) -1),3,'0')  as ip2,
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,2) + 1,instr('192.168.1.2','.',1,3) -instr('192.168.1.2','.',1,2) -1),3,'0')  as ip3,
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,3) + 1,length('192.168.1.2') - instr('192.168.1.2','.',1,3)),3,'0') as ip4
    from dual
      

  2.   

    IP换成数字的
    select to_number(
    lpad(substr('192.168.1.2',1,instr('192.168.1.2','.',1,1) -1),3,'0') ||
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,1) + 1,instr('192.168.1.2','.',1,2) -instr('192.168.1.2','.',1,1) -1),3,'0') ||
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,2) + 1,instr('192.168.1.2','.',1,3) -instr('192.168.1.2','.',1,2) -1),3,'0') ||
    lpad(substr('192.168.1.2',instr('192.168.1.2','.',1,3) + 1,length('192.168.1.2') - instr('192.168.1.2','.',1,3)),3,'0')) as ip
    from dual数字换成ip的
    select 
    substr(192168001002,1,length(192168001002) -9) || '.' ||
    to_number(substr(192168001002,12 -length(192168001002) + 4,3))  || '.' ||
    to_number(substr(192168001002,12 -length(192168001002) + 7,3))  || '.' ||
    to_number(substr(192168001002,12 -length(192168001002) + 10,3)) as ip
    from dual