2016-04-14 10 views
3

大文字の前にスペースを挿入しようとしています。私はregexp_replaceを使うのは簡単だと思っていましたが、置き換えようとしているキャラクターに適切な後方参照を得ることができません。Oracleの大文字の前にスペースを追加してください

select trim(regexp_replace ('FreddyFox', '[A-Z]', ' \1')) from dual; 

Result: '\1reddy \1ox' 

私は後方参照の複数のバリエーションを試しましたが、私はOracleを満たすものを見つけることができません。

私は複数のSO答えを見ましたが、何が間違っているのか把握できませんでした。例: regexp_replace: insert a space in a string if not already present

+4

'REGEXP_REPLACE( 'FreddyFox'、 '([A-Z])'、 '\ 1'))' –

+0

@Lashane、ビンゴ。それを答えて、私はあなたにそれを与えるでしょう。 – AnthonyVO

答えて

0
TRIM(regexp_replace ('FreddyFox', '([A-Z])', ' \1')) 
+0

また、複数のスペース文字を1つに減らしたい場合は、 'TRIM(regexp_replace( 'FreddyFox <複数のスペースはここにある> Fainted'、 '\ s *([A-Z])'、 '\ 1'))'となります。コメント欄は自動的に複数のスペースを取り除くようです。なんて皮肉だな。 –

0

TRIMは、文字列から先頭や末尾の文字(あるいはその両方)をトリミングすることができます。 trim_characterまたはtrim_sourceが文字リテラルの場合は、一重引用符で囲む必要があります。デフォルトは両方です。おそらく

regexp_replace ('FreddyFox', '^([A-Z])', ' \1') 
関連する問題