我需要一点帮助,下面是查询,我通过它获取文件名后的数据,我得到了它,但在某些情况下,我们在文件名后没有“/”,所以我计划修剪“/”这是在文件名之后。任何人都可以帮忙吗?我已经提供了带有输入、当前输出和预期输出的查询:
输入:
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
在您之前的一个问题中,您已经使用了
ltrim()
,这也应该足以完成这里的工作。
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 |