2016-01-11 29 views
5

Non riesco a vedere che conduce/spazi finali nel seguente istruzione SQL seguente eseguito con psql:Come visualizzare gli spazi bianchi iniziali/finali in una colonna PostgreSQL?

select name from my_table; 

Esiste un modo pragmatico di vedere leader/spazio bianco in coda?

+4

Nulla built-in per quanto ne so. In genere includo i valori con un carattere "marcatore": 'seleziona '>' || nome || '<' da my_table' –

+0

invece del solo nome prova '' '|| nome ||'" ' –

+0

Per quello che vale , PgAdmin ti darà gli spazi – Hambone

risposta

3

Se non ti dispiace sostituendo tutti i caratteri di spazi bianchi anche se non stanno portando/finale, qualcosa di simile a quanto segue lo farà:

SELECT REPLACE(REPLACE(REPLACE(REPLACE(txt, ' ', '_'), 
           E'\t', '\t'), 
         E'\r', '\r'), 
       E'\n', '\n') AS txt 
FROM test; 

Questo sta usando un carattere di sottolineatura per marcare gli spazi, ma naturalmente sei libero di scegliere il tuo. Vedi SQL fiddle demo.

Se si desidera visualizzare solo quelli iniziali/finali, sarà più complesso, ma se ciò è realmente desiderato, è possibile utilizzare regex_replace.

+0

Sì, questo dovrebbe funzionare. Nel mio caso uno sarebbe "REPLACE (txt, '', '_')'. – guettli

2

Una delle opzioni è utilizzare la funzione format().

Con determinato caso query: select format('"%s"', name) from my_table;

PoC:

SELECT format('"%s"', name) 
FROM (VALUES (' a '), (' b ')) v(name); 

format 
-------- 
" a " 
" b " 
(2 rows) 
+0

Questo non sembra mostrare più spazi? Confronto dei due metodi [qui] (http://sqlfiddle.com/#!15/2944e/6). –

+1

@SteveChambers - non sono sicuro del motivo per cui ottieni tale risultato. Per esempio. se eseguo 'SELECT format ('"% s "', name) FROM (VALUES (E '\ t Hello there \ t \ r')) v (name);' Ottengo: '" Hello there \ r "' . Rimosso '\ n' come commenti non consente qui multiline. Ma format() non li illumina come soluzione sostitutiva(), quindi a seconda di come si desidera catturare spazi bianchi è possibile scegliere l'una o l'altra soluzione. Anche la domanda era in testa/in coda agli spazi vuoti, quindi in quel contesto l'uso di format() può essere una delle opzioni per risolverlo senza dover usare più replace() - s :) –

+0

Ci scusiamo - Mi correggo - funziona in rextester: http: //rextester.com/FYNM80952 Non sei sicuro del motivo, ma forse qualcosa da fare su come SQLFiddle presenta i risultati? –

0

Disattivare "modalità allineati" in psql: \a

\a 
select * from my_table; 

id|col1|col2 
12|foo|bar