0

我有包含字段和值的表:

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

我必须加入第一个和第三个记录,知道第一个 ENTADDR。那么如何从 18.17.16.2 得到 18.17.16.1 呢?(最后一个字符 -1)。同样,我必须知道第二个ENTADDR(18.17.16.53的18.17.16.54,即最后一个字符+1)加入第二个和第四个记录

所以我需要“选择”,例如:


从 table1中选择ENTIFINDEX,
其中 ' ENTADDR 的一些转换(更改最后一个字符) '= ENTADDR

谢谢指教!!

4

2 回答 2

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
于 2015-04-23T07:55:21.123 回答
0

select concat(left(ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR)+1)+1)),right(ENTADDR,length(ENTADDR)-locate( '.',ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR)+1)+1))-ENTIFINDEX) 作为表中的 ipminusone

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

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

于 2015-04-23T08:18:37.377 回答