我的桌子上有字段和值:
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
感谢您的建议!!
答案 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的值如果您计划经常这样做,也可以使用存储过程执行此操作。