我是psql的新手,我有一个我正在练习的sql文件。
如果我键入以下内容:
select log.path from log where log.status not like '404 NOT FOUND';
我到达这里:
path
------------------------------------
/article/bears-love-berries
/article/bad-things-gone
/article/trouble-for-troubled
/
/article/bad-things-gone
/article/so-many-bears
/article/bears-love-berries
/
/article/bears-love-berries
/article/so-many-bears
/article/goats-eat-googles
/article/trouble-for-troubled
/
/article/goats-eat-googles
/
/article/bad-things-gone
/
/article/media-obsessed-with-bears
/article/bears-love-berries
/article/candidate-is-jerk
我正在尝试修剪/结束/关闭结果。 如果我键入以下内容:
select ltrim(log.path, '/article/') from log where log.status not like '404 NOT FOUND';
结果如下:
ltrim
---------------------------
bears-love-berries
bad-things-gone
ouble-for-troubled
bad-things-gone
so-many-bears
bears-love-berries
bears-love-berries
so-many-bears
goats-eat-googles
ouble-for-troubled
goats-eat-googles
bad-things-gone
media-obsessed-with-bears
bears-love-berries
ndidate-is-jerk
其中一些没有正确修剪或有一些关于它我不理解。我花了几个小时研究和尝试不同的方法,但我似乎无法弄明白。
答案 0 :(得分:0)
ltrim
并不能完全按照您的想法行事。它从左侧开始并修剪/article/
中出现的任何符号,这意味着它还会从tr
中删除trouble
,因为t
和r
属于/article/
{1}}。请改用substring()
,它也支持模式匹配。
答案 1 :(得分:0)
根据PSQL:https://www.postgresql.org/docs/9.6/static/functions-string.html
LTRIM将“删除仅包含字符中字符的最长字符串”
select ltrim('zzzytest', 'xyz')
Result: 'test'
所以你不会像你想象的那样替换单个文本条目。它将从字符串中删除字符,而不仅仅是您要删除的一个字符。
所以在这个实例中,你的一个混乱的字符串输出
/条/候补是-加加速度
正在变成
ndidate-是-加加速度
如果您尝试仅从句子中删除特定字符串,则最好使用替换。替换的语法是: 替换('STRING OR COLUMN','要替换的文本','要替换'的文本')
select replace('/article/candidate-is-jerk', '/article/', '')
Result: "candidate-is-jerk"