范例我有一串...'/this/is/a/给定/字符串/测试文件'如何在PSQL中获取子字符串'given/string/test.file'?谢谢你,谢谢你
yb3bgrhw1#
您可以使用正则表达式
with example(str) as ( values('/this/is/a/given/string/test.file') ) select regexp_replace(str, '(/.*?){4}', '') from example; regexp_replace ------------------------ given/string/test.file (1 row)
或者函数string_to_array():
string_to_array()
select string_agg(word, '/' order by ord) from example, unnest(string_to_array(str, '/')) with ordinality as u(word, ord) where ord > 4;
另请参阅How to find the 3rd occurrence of a pattern on a line。
h79rfbju2#
我不知道如何得到一个子字符串的第n次出现,但是对于这个问题,你可以使用正则表达式。如下所示:
select substring('/this/is/a/given/string/test.file' from '/[^/]+/[^/]+/[^/]+/(.*)')
你可以改进正则表达式,这只是为了演示的目的。
2条答案
按热度按时间yb3bgrhw1#
您可以使用正则表达式
或者函数
string_to_array()
:另请参阅How to find the 3rd occurrence of a pattern on a line。
h79rfbju2#
我不知道如何得到一个子字符串的第n次出现,但是对于这个问题,你可以使用正则表达式。如下所示:
你可以改进正则表达式,这只是为了演示的目的。