2009-07-28 2 views
6

Sto facendo funzionare questa dichiarazione:Oracle: come rimuovere gli spazi bianchi?

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

Anche se ho usato la dichiarazione assetto(), la mia uscita è simile al seguente:

A               B        
___               ____ 
kunjramansingh            smartdude 

Il tipo di dati di colonna 'a' e 'b' è varchar2 (255).

C'è uno spazio tra i dati di due uscite. Voglio mostrare i dati senza lo spazio bianco - in un formato come questo:

A    B 
___   ______ 
kunjramansinghsmartdude 

Come posso fare questo?

+0

Attendere, stiamo parlando i dati restituiti o il display dei risultati della query? SQL * Plus? – curtisk

+0

Hi curtisk, stiamo parlando dei dati restituiti> –

risposta

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

--- 
AB___kunjramansinghsmartdude 

Aggiornamento:

Proprio concatenare le stringhe:

SELECT a || b 
FROM mytable 
+0

nice! Ho appena salvato la mia giornata ... – CFNinja

5

Se ho capito bene, questo è ciò che si vuole

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

Questo suona come un problema di formattazione di uscita ? Se si utilizza SQL più, utilizzare il comando COLONNA come questo (supponendo che si desidera una larghezza massima di visualizzazione di 20 caratteri ciascuno):

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

beh, ora ce l'ha fatta, entrambi gli scenari :) – curtisk

1

SQL Plus formattare le colonne di tenere la massima possibile valore, che a sua questo caso è 255 caratteri.

Per confermare che l'output in realtà non contiene quegli spazi in più, provate questo:

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

Se i caratteri '/' sono separati dal vostro output, allora che indica che non è spazi, ma qualche altro carattere dello spazio bianco che è entrato lì (schede, ad esempio). Se questo è il caso, allora è probabilmente un problema di validazione dell'input da qualche parte nella tua applicazione.

Tuttavia, lo scenario più probabile è che i caratteri "/" tocchino il resto delle stringhe, provando in tal modo che lo spazio bianco sia effettivamente tagliato.

Se desideri inviarli insieme, la risposta fornita da Quassnoi dovrebbe farlo.

Se si tratta di un problema di visualizzazione, la risposta fornita da Tony Andrews dovrebbe funzionare correttamente.

11

Sembra che si sta eseguendo la query in sqlplus. Sqlplus deve garantire che ci sia spazio sufficiente nella spaziatura delle colonne in modo da poter visualizzare la dimensione massima della stringa (255). Di solito, la soluzione è utilizzare le opzioni di formattazione della colonna (Esegui prima della query: colonna A formato A20) per ridurre la dimensione massima della stringa (le righe che superano questa lunghezza verranno visualizzate su più righe).

-1

Run sotto interrogazione sostituzione TABLE_NAME & COLUMN_NAME con i tuoi effettivi tavolo & nomi di colonna:

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

si può usare 'rpad' nella query di selezione e specificare le dimensioni ...

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

dove il primo parametro è il nome della colonna e il secondo parametro è la dimensione con cui si desidera eseguire il rilievo.

0

utilizzare la seguente per assicurare non c'è spazio bianco in uscita:

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

uscita

John, Smith

Jane, Doe

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

Say, abbiamo una colonna con valori costituiti da caratteri alfanumerici a e sottolineatura solo. Abbiamo bisogno di tagliare questa colonna di tutti gli spazi, tabulazioni o qualsiasi altro carattere bianco. L'esempio seguente risolverà il problema. Sia il rifilato che quello originale vengono visualizzati per il confronto. select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

Se si desidera sostituire gli spazi bianchi in un particolare valore di colonna, è possibile utilizzare il seguente script per fare il lavoro per voi,

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name);