2017-08-17 2 views
0

を指定していない文字がトリミングされます。私はこれに到着psqlのLTRIMは私が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

PSQLによると:https://www.postgresql.org/docs/9.6/static/functions-string.html

LTRIMは、あなたのような単一のテキスト入力を交換するつもりはありませんので

select ltrim('zzzytest', 'xyz') 
Result: 'test' 

「の文字から文字のみを含む最も長い文字列を削除」しますあなたはそれがそうだと思います。文字列から文字を削除するのは、必ず削除する必要のある文字列だけではありません。

だからあなたの1と、このインスタンスで台無しに文字列を出力

ndidate-あるジャークになりつつある

/記事/ - であるジャークが候補

あなたはreplaを使用したほうが良いかもしれませんある特定の文字列だけを文から削除しようとしている場合は、交換するための構文は次のとおりです。 は(「STRINGまたは列」、「あなたが交換したいテキスト」、「あなたと置き換えたいテキスト」)私が理解するための方法で説明するための

select replace('/article/candidate-is-jerk', '/article/', '') 
Result: "candidate-is-jerk" 
+0

感謝を交換してください。ドキュメンテーションは、読むのが混乱することがあります。これはすごくうまくいった。 – Zero147x

+0

あなたは大歓迎です。私はときどきドキュメントが明確ではないほど同じ問題を抱えています。あなたの旅を楽しんでください! – Branden

0

ltrimは正確にあなたが何を考え実行しません。これは、左から始まり、/article/で発生した任意のシンボルをトリム、tr/article/の一部であるので、それはまた離れてtrtroubleからカットを意味しています。代わりにsubstring()を使用し、パターンマッチングもサポートします。

関連する問題