如何在postgres中修剪文件名后的第一个'/'

问题描述 投票:0回答:1

我需要一点帮助,下面是查询,我通过它获取文件名后的数据,我得到了它,但在某些情况下,我们在文件名后没有“/”,所以我计划修剪“/”这是在文件名之后。任何人都可以帮忙吗?我已经提供了带有输入、当前输出和预期输出的查询:

输入:

select lower(substring(split_part('ksh $sample/wrapper.sh --filename /abc/test/svc_test_abc_card.yaml', 'filename', 2) from '[^ ]+'::text))

电流输出

/abc/test/svc_test_abc_card.yaml

预期输出:

abc/test/svc_test_abc_card.yaml
postgresql postgresql-9.5
1个回答
0
投票

您之前的一个问题中,您已经使用了

ltrim()
,这也应该足以完成这里的工作。

db<>fiddle 的演示:

with your_table(example) as (values
  ('ksh $sample/wrapper.sh --filename /abc/test/svc_test_abc_card.yaml'))
select ltrim(
         lower(
           substring(
             split_part( example
                        ,'filename'
                        ,2) 
             from '[^ ]+'::text))
        ,'/')
from your_table;
修剪
abc/test/svc_test_abc_card.yaml

但是正如@Stefanov.sm指出,你用

split_part()
所做的事情可以直接在正则表达式中处理,这也适用于
ltrim()

with your_table(example) as (values
  ('ksh $sample/wrapper.sh --filename /abc/test/svc_test_abc_card.yaml'))
select lower(substring(example from 'filename\s+\/?([^ ]+)'))
from your_table;
子串
abc/test/svc_test_abc_card.yaml
© www.soinside.com 2019 - 2024. All rights reserved.