我有一个这样的视图:
SELECT * FROM test --will show:
path
------------------------
/downloads/abc-dbc-abcd
/downloads/dfg-gfd-hjkl
/downloads/tyu-iti-titk
如何使用TRIM仅选择列路径中字符串的结尾部分?
在PostgreSQL中,我尝试过:
SELECT TRIM('/downloads/' FROM (SELECT * FROM test);
SELECT TRIM('/downloads/' FROM (SELECT path FROM test);
我希望接收的输出字符串只是'abc-dbc-abcd'等。与输入相同,但删除了“ / downloads /”。我一直遇到错误...
ERROR: more than one row returned by a subquery used as an expression
答案 0 :(得分:3)
您的错误是因为您在SubQuery
函数中使用了TRIM()
,并且该函数返回了多于1行的错误提示。
我更喜欢您在这里使用REPLACE()
而不是TRIM()
函数。来自Documentation REPLACE
:
将子字符串中的所有匹配项都替换为
对于查询:
SELECT REPLACE(path, '/downloads/', '') from test;
您可以在这里看到Demo
答案 1 :(得分:1)
尝试一下。
SELECT LTRIM(RTRIM(REPLACE(path,'/downloads/','')))