2009-07-28 12 views
6

Używam tego oświadczenia:Oracle - jak usunąć białe przestrzenie?

select trim(a),trim(b) from table x; 

Nawet użyłem trim() oświadczenie, moje wyjście wygląda następująco:

A               B        
___               ____ 
kunjramansingh            smartdude 

Typ danych kolumny 'a' i 'b' jest varchar2 (255).

Występuje luka między danymi dwóch wyników. Chcę wyświetlać dane bez odstępów - w formacie takim:

A    B 
___   ______ 
kunjramansinghsmartdude 

Jak mogę to zrobić?

+0

Czekaj, mówimy dane zwrócone lub wyświetlacz wyników zapytania? SQL * PLUS? – curtisk

+0

Witam dywanie, Mówimy o danych zwróconych> –

Odpowiedz

12
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '') 
FROM dual 

--- 
AB___kunjramansinghsmartdude 

Aktualizacja:

Wystarczy łączenia ciągów:

SELECT a || b 
FROM mytable 
+0

fajnie! właśnie uratowałem mój dzień ... – CFNinja

5

Jeśli dobrze rozumiem, to co chcesz

select (trim(a) || trim(b))as combinedStrings from yourTable 
3

To brzmi jak problem formatowania wyjścia ? W przypadku korzystania z SQL * Plus, użyj polecenia COLUMN tak (zakładając chcesz maksymalną szerokość wyświetlania 20 znaków dla każdego):

column a format a20 
column b format a20 
select a, b from mytable; 
+0

dobrze on ma to zakryte teraz, albo scenariusz :) – curtisk

1

SQL Plus formatować kolumny do utrzymywania maksymalnej możliwą wartość, który w ten przypadek ma 255 znaków.

Aby potwierdzić, że wyjście w rzeczywistości nie zawiera tych dodatkowych spacji, spróbuj tego:

SELECT 
    '/' || TRIM(A) || '/' AS COLUMN_A 
,'/' || TRIM(B) || '/' AS COLUMN_B 
FROM 
    MY_TABLE; 

Jeśli znaki „/” są oddzielone od produkcji, to oznacza, że ​​to nie obowiązuje, ale jakiś inny biały znak, który się tam dostał (karty, na przykład). W takim przypadku prawdopodobnie jest to problem z weryfikacją danych wejściowych w aplikacji.

Jednak najbardziej prawdopodobny scenariusz polega na tym, że znaki "/" faktycznie dotkną reszty twoich strun, co udowodni, że białe spacje są faktycznie przycięte.

Jeśli chcesz wyprowadzić je razem, to odpowiedź powinna być udzielona przez Quassnoi.

Jeśli jest to wyłącznie kwestia wyświetlania, odpowiedź udzielona przez Tony'ego Andrewsa powinna działać poprawnie.

11

Wygląda na to, że wykonujesz zapytanie w sqlplus. Sqlplus musi zapewnić wystarczającą ilość miejsca w odstępach między kolumnami, aby można było wyświetlić maksymalny rozmiar ciągu znaków (255). Zwykle rozwiązaniem jest użycie opcji formatowania kolumny (Uruchom przed zapytaniem: kolumna A, format A20), aby zmniejszyć maksymalny rozmiar ciągu (linie przekraczające tę długość będą wyświetlane w wielu wierszach).

-1

Run poniżej zapytania zastępującego TABLE_NAME & COLUMN_NAME rzeczywistą stół & nazw kolumn:

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME); 
3

można użyć '' RPAD w kwerendy wybierającej i określić rozmiar ...

select rpad(a , 20) , rpad(b, 20) from x ; 

gdzie pierwszym parametrem jest twoja nazwa kolumny, a drugim parametrem jest rozmiar, którym chcesz się posługiwać.

0

Użyj następujących ubezpieczyć nie ma spacji w wyjściu:

select first_name || ',' || last_name from table x; 

Wyjście

John Smith

Jane Doe

1
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS 
1

Say, mamy kolumnę z wartościami składającymi się ze znaków alfanumerycznych a tylko underscore. Musimy przyciąć tę kolumnę ze wszystkich spacji, tabulacji lub dowolnych białych znaków. Poniższy przykład rozwiąże problem. Wycięte i oryginalne oba są wyświetlane dla porównania. select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

Jeśli chcesz wymienić spacji w określonej wartości kolumny, można użyć następującego skryptu, aby wykonać zadanie dla Ciebie,

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
Powiązane problemy