2016-01-11 47 views
5

nie widzę wiodącym/końcowe spacje w następującej poniższej instrukcji SQL zawartej z psql:Jak wyświetlić wiodące/końcowe białe znaki w kolumnie PostgreSQL?

select name from my_table; 

Czy istnieje sposób, aby zobaczyć pragmatyczne wiodącej/końcowe spacje?

+4

Nic wbudowany w miarę znam. Zazwyczaj ujmuję wartości za pomocą jakiegoś znaku "znacznika": 'wybierz '>' || nazwa || '<' z my_table' –

+0

zamiast samej nazwy spróbuj '"' || nazwa || '"' –

+0

Za co jest warta , PgAdmin poda Ci spacje – Hambone

Odpowiedz

3

Jeśli nie przeszkadza zastępując wszystkie białe znaki, czy nie są one czołowy/tylny coś jak poniżej zrobi:

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

ten korzysta z okazji podkreślenia przestrzenie ale oczywiście możesz wybrać swój własny. Zobacz SQL fiddle demo.

Jeśli chcesz tylko pokazywać znaki wiodące/końcowe, będzie to bardziej skomplikowane - ale jeśli jest to naprawdę pożądane, może być możliwe użycie opcji regex_replace.

+0

Tak, to powinno działać. W moim przypadku wystarczy "REPLACE (txt,", "_") ". – guettli

2

Jedną z opcji jest użycie funkcji format().

W danym przypadku zapytań: select format('"%s"', name) from my_table;

PoC:

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

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

To wydaje się nie wyświetlać wielu spacji? Porównanie dwóch metod [tutaj] (http://sqlfiddle.com/#!15/2944e/6). –

+1

@SteveChambers - nie wiesz, dlaczego uzyskasz taki wynik. Na przykład. jeśli uruchomię format 'SELECT ('"% s ", nazwa) OD (WARTOŚCI (E' \ t Witam \ t \ r ')) v (nazwa);' Otrzymuję: '" Witaj tam \ r "' . Usunięto '\ n', ponieważ komentarze nie pozwalają tutaj na multilinię. Ale format() nie podświetla ich jako rozwiązania replace() - więc w zależności od tego, jak chcesz uchwycić białe znaki, możesz wybrać jedno lub drugie rozwiązanie. Również pytanie było wiodącym/ciągłym odstępem, więc w tym kontekście użycie formatu() może być jedną z opcji rozwiązania bez konieczności używania wielu zamian() - s :) –

+0

Przeprosiny - poprawiam się - działa w rextester: http: //rextester.com/FYNM80952 Nie wiem dlaczego, ale może ma to coś wspólnego z tym, jak SQLFiddle przedstawia wyniki? –

0

Wyłącz "tryb wyrównany" w psql: \a

\a 
select * from my_table; 

id|col1|col2 
12|foo|bar