将IP地址中的最后一个字符串替换为PL / SQL

时间:2015-04-23 07:33:15

标签: mysql plsql ip-address regexp-replace

我的桌子上有字段和值:

 ENTADDR (VARCHAR2)     ENTIFINDEX (VARCHAR2)
18.17.16.2                1
18.17.16.53               2
18.17.16.1                3
18.17.16.54               4

我必须加入第1和第3个记录,知道第一个ENTADDR。 那么我如何从18.17.16.2获得18.17.16.1? (最后一个字符-1)。同样地,我必须加入第2和第4记录,知道第二个ENTADDR(18.17.16.54从18.17.16.53开始,即最后一个字符+1)

所以我需要“选择”如:

选择
表1中的ENTIFINDEX ' ENTADDR的某些转换(更改最后一个字符)'= ENTADDR

感谢您的建议!!

2 个答案:

答案 0 :(得分:0)

这是你在看什么

SQL> select concat (substr('18.17.16.2',1,9),substr ('18.17.16.2',-1)-1 ) as "concat val" from dual;

concat val
----------
18.17.16.1

答案 1 :(得分:0)

选择concat(左(ENTADDR,locate('。',ENTADDR,locate('。',ENTADDR,locate('。',ENTADDR)+1)+1)),右(ENTADDR,长度(ENTADDR)) -locate('。',ENTADDR,locate('。',ENTADDR,locate('。',ENTADDR)+1)+1)) - ENTIFINDEX)as ipminusone from table

搜索第一个第二个和第三个'。'然后从IP的最后部分

中减去ENTIFINDEX的值

如果您计划经常这样做,也可以使用存储过程执行此操作。