2016-04-12 15 views
1

yerine/silinemiyor baştaki ve RTRIM() ve LTRIM() veya REGEXP_REPLACE() bir arada kullanarak, beyaz alanlar olursa olsun sondaki:Oracle - Ben sadece kurtulmak olamaz Aşağıdaki örnek deyimi Verilen boşlukları

select 
test_column 
,length(test_column) len 
,regexp_replace(test_column, '(^[[:blank:]]+)|([[:blank:]]+$)','') rxp 
,length(regexp_replace(test_column, '(^[[:blank:]]+)|([[:blank:]]+$)','')) len_rxp --22 characters expected, but is 26 
,rtrim(ltrim(test_column)) rltrim 
,length(rtrim(ltrim(test_column))) len_rltrim --22 characters expected, but is 26 
from(
    select ' ABCDEF Hijklmnopqr S32    ' test_column --22 characters without and 29 including whitespaces 
    from dual); 

Sorun nedir?

+0

sekmeleri oracle'de [[: boş:]] 'var mı? – rock321987

+0

Evet, whitespaces ve tabları yakalar – royskatt

+0

'^ + | + $ 've işe yarayıp yaramadığını görün – rock321987

cevap

1

Aşağıdaki kullanabilirsiniz: boşluk

select regexp_replace(test_column, '^(\t|\s)*(.*)(\t|\s)*$', '\2') 
from (
     select ' ABCDEF Hijklmnopqr S32    ' test_column 
     from dual 
    ); 

Bu yalnızca ikincisini (biten lider, anlamlı metin) 3 bölüm halinde dize bölmek ve dönmelidir, böylece sondaki kesilmesi ve bitiş dizileri ve

+0

Garip, bunu yaptığımda hala uzunluk = 26. Yukarıda bahsettiğim uzunluk komutlarını uygularken hangi sonuçları alırsınız? – royskatt

+0

Belki de "tuhaf" bir karakterin var; DUMP ile aynı sonucu elde edip etmediğinizi kontrol edin (sadece cevabı düzenlediniz) – Aleksej

+0

Bingo! Whitespaces yerine bazı son sekmeler vardı! Bunları nasıl düzeltebilirim? – royskatt

İlgili konular