我想从oracle表中的最后一个'/';在';之前';从图像表中的最后一个

我想从oracle表中的最后一个'/';在';之前';从图像表中的最后一个,oracle,plsql,oracle11g,plsqldeveloper,Oracle,Plsql,Oracle11g,Plsqldeveloper,我想从列中最后一个“/”和最后一个“.”之间的字符串中获取子字符串 以下是图像路径列名的示例日期: sph/images/30_Fairhall_Court.jpeg sph/images/9_Pennethorne_House.jpeg rbkc/images/TAVISTOCK_CRESCENT.jpeg haringey/images/399932thumb.jpg urbanchoice/images/18190862.jpg wandle/images/f13c10d2-2

我想从列中最后一个“/”和最后一个“.”之间的字符串中获取子字符串

以下是图像路径列名的示例日期:

 sph/images/30_Fairhall_Court.jpeg
 sph/images/9_Pennethorne_House.jpeg
 rbkc/images/TAVISTOCK_CRESCENT.jpeg
 haringey/images/399932thumb.jpg
 urbanchoice/images/18190862.jpg
 wandle/images/f13c10d2-2692-457d-a208-8bb9e10b27dc.png
 housingmoves/images/No14_Asterid Heights_DS37620.jpg
 wandle/images/f13c10d2-2692-457d-a208-8bb9e10b27dc.png 
因此,所需的输出如下

 30_Fairhall_Court
 9_Pennethorne_House
 TAVISTOCK_CRESCENT
 399932thumb
 18190862
 f13c10d2-2692-457d-a208-8bb9e10b27dc
 No14_Asterid Heights_DS37620
 f13c10d2-2692-457d-a208-8bb9e10b27dc

请建议如何取。我需要用此值更新表中的另一个空白列。该表大约有10条记录。

此正则表达式适用于您提供的示例数据:

select regexp_substr(image_path
            , '(/)([a-z0-9_ \-]+)(\.)([a-z]+)$'
            , 1
            , 1
            , 'i'
            , 2) 
from t23
/
我们必须在
pattern
之后包含所有可选参数,以便使用
subexpr
参数仅选择filename元素


就更新而言,一百万行表并没有那么大。由于必须更新所有行,因此无法对其进行太多调整。只需发出UPDATE语句,并让它撕裂


“它不起作用”

嗯,给你。你可能输入了一个拼写错误


“regexp看起来不必要的复杂。为什么不简单”


也许太复杂了。但是,如果图像路径中有多个点,则简化版本不会产生正确的结果。如果这种情况永远不会发生,那么您的解决方案工作正常。

可能的解决方案之一是使用函数substr()和负第三个参数:

select image_path, 
    substr(image_path, 
           instr(image_path, '/', -1) + 1, 
           instr(image_path, '.', -1)-instr(image_path, '/', -1) - 1) img
  from test

结果:

IMAGE_PATH                                                IMG
--------------------------------------------------------  -------------------------------------
sph/images/30_Fairhall_Court.jpeg                         30_Fairhall_Court
sph/images/9_Pennethorne_House.jpeg                       9_Pennethorne_House
rbkc/images/TAVISTOCK_CRESCENT.jpeg                       TAVISTOCK_CRESCENT
haringey/images/399932thumb.jpg                           399932thumb
urbanchoice/images/18190862.jpg                           18190862
wandle/images/f13c10d2-2692-457d-a208-8bb9e10b27dc.png    f13c10d2-2692-457d-a208-8bb9e10b27dc
housingmoves/images/No14_Asterid Heights_DS37620.jpg      No14_Asterid Heights_DS37620
wandle/ima.ges/f13c10d2-2692-457d-a208-8bb9e10b27dc.png   f13c10d2-2692-457d-a208-8bb9e10b27dc

regexp看起来很复杂。为什么不简单:
([^/]+)\..+$
@AnujKumarKushwaha—“它不起作用”的信息量不大。