0

次の SQL を書き直して、フィールドの右側にあるコロン (:) またはスラッシュ (/) の最初のインスタンスの後に来るものをすべて抽出する方法を見つけようとする助けを探しています。

私は現在、以下のようなものを使用していますが、それはコロン (:) の後からのみプルし、スラッシュ (/) も検索する必要があります。

select substr(DBURL,instr(DBURL,':',-1)+1) as DB
from databasename;

DBURL フィールドのデータの例:

trld:client:blah:data
trld:client:blah/data

スティングのデータ部分を抽出することだけを考えています。

4

2 に答える 2

2

あなたの 2 つを にラップするだけinstrですgreatest

11:17:02 (20)SYSTEM@dwal> ed
Wrote file S:\spool\dwal\BUF_SYSTEM_20.sql

  1  with databasename(dburl) as (
  2   select 'trld:client:blah:data' from dual union all
  3   select 'trld:client:blah\data' from dual
  4  )
  5  select substr(DBURL,greatest(instr(DBURL,'\',-1), instr(DBURL,':',-1))+1) as DB
  6* from databasename
11:17:14 (20)SYSTEM@dwal> /

DB
---------------------
data
data

Elapsed: 00:00:00.10

正規表現も問題ありませんが、遅くなります。

于 2013-10-02T03:19:04.553 に答える