我想从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—“它不起作用”的信息量不大。