2016-04-14 21 views
3

Oracle'daki büyük harflerden önce bir boşluk eklemeye çalışıyorum. Bir regexp_replace kullanmanın kolay olacağını düşündüm, ama değiştirdiğim karaktere uygun bir geri referans gösteremiyorum.Oracle'da Baş harflerden önce boşluk ekleyin

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

Result: '\1reddy \1ox' 

Arka referansın birden çok varyantını denedim, ancak Oracle'ı tatmin edecek bir şey bulamıyorum.

Birden çok SO yanıtına baktım ama neyin yanlış olduğunu anlayamadım. , ör. regexp_replace: insert a space in a string if not already present

+4

'regexp_replace ('FreddyFox', '([A-Z])', '\ 1')) ' –

+0

@Lashane isabet. Bir cevap ver ve sana vereceğim. – AnthonyVO

cevap

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

Ayrıca, birden fazla boşluk karakterini bir de azaltmak isterseniz: TRIM (regexp_replace ('FreddyFox <çoklu boşluklar burada> Bayıldı', '\ s * ([A-Z])', '\ 1')). Yorum bölümü, birden çok alanı otomatik olarak kırpıyor gibi görünüyor. Ne kadar ironik. –

0

TRIM bir karakter dizesinden başında veya sonunda karakter (veya her ikisi) Döşeme sağlar. Eğer trim_character veya trim_source bir karakter değişkeni ise, o zaman onu tek tırnak içine almalısınız. Varsayılan ikisi de. Muhtemelen

regexp_replace ('FreddyFox', '^([A-Z])', ' \1')