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

1番目のENTADDRを知っている1番目と3番目のレコードに参加する必要があります。では、どうすれば 18.17.16.2 から 18.17.16.1 を取得できますか? (最後の文字 -1)。同様に、2番目のENTADDR(18.17.16.53から18.17.16.54、つまり最後の文字+1)を知っている2番目と4番目のレコードに参加する必要があります

したがって、次のような「選択」が必要です。

「ENTADDRの何らかの変換 (最後の文字の変更)」= ENTADDRである
table1 から ENTIFINDEX を選択します。

アドバイスありがとう!!

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

concat(左(ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR)+1)+1)),右(ENTADDR,長さ(ENTADDR)-locate( '.',ENTADDR,locate('.',ENTADDR,locate('.',ENTADDR)+1)+1))-ENTIFINDEX) テーブルの ipminusone として

これは、最初の 2 番目と 3 番目の「.」を検索します。次に、IP の最後の部分から ENTIFINDEX の値を減算します。

これをかなり頻繁に行う予定の場合は、ストアド プロシージャを使用してこれを行うこともできます。

于 2015-04-23T08:18:37.377 に答える