2013-03-12 9 views
5

Come posso vedere gli spazi in String quando si utilizza select con sql-command-line-client?come visualizzare gli spazi nei dati quando si seleziona con il client della riga di comando mysql

Quello che voglio dire è il seguente. hai tre linee. 1, 2 e 3 spazi. Non hai la possibilità di vedere il numero di spazi.

create table foo(bar varchar(8)); 
insert into foo values(" "),(" "), (" "); 

select * from foo\g 
+------+ 
| bar | 
+------+ 
|  | 
|  | 
|  | 
+------+ 

mysql> select * from foo\G 
*************************** 1. row *************************** 
bar: 
*************************** 2. row *************************** 
bar: 
*************************** 3. row *************************** 
bar:  
3 rows in set (0.01 sec) 

L'unica opzione mi è venuta in mente è:

mysql> select bar, hex(bar) from foo; 
+------+----------+ 
| bar | hex(bar) | 
+------+----------+ 
|  | 20  | 
|  | 2020  | 
|  | 202020 | 
+------+----------+ 
3 rows in set (0.01 sec) 

Qualcosa di simile var_export in php sarebbe bello.

+1

Che ne dici di aggiungere alcuni caratteri pre e post? 'seleziona la barra, '>' + bar + '<' da foo' –

+0

ho pensato anche a questo. bit in mysql non è molto comodo: "concat ('>', bar, '<')" e la stringa non riceverà ecsap correttamente. – jens

risposta

5

Risulta c'è una funzione di stringa QUOTE (Escape the argument for use in un'istruzione SQL) che funziona davvero bene.

-- to add another tricky example 
mysql> insert into foo values(" \" ' "), ("''"); 
Query OK, 1 row affected (0.06 sec) 

mysql> select bar, quote(bar) from foo; 
+-------+------------+ 
| bar | quote(bar) | 
+-------+------------+ 
|  | ' '  | 
|  | ' '  | 
|  | ' '  | 
| " ' | ' " \' ' | 
| '' | '\'\''  | 
+-------+------------+ 
4 rows in set (0.00 sec) 
0

Se si tratta solo di visualizzare lo spazio, è necessario codificare la stringa prima di memorizzarla. Se si tratta di confronto, scoprirai che le stringhe iniziali (prima di un non spazio) vengono preservate mentre non lo sono. Vedere più qui: here

0

Come sull'utilizzo String LENGTH() per ottenere un risultato simile a phpvar_export()

SELECT bar, LENGTH(bar) FROM foo; 
+0

questo può funzionare per stringhe brevi, ma per quanto riguarda le stringhe lunghe (ad esempio 325 caratteri)? ancora una volta non è stato possibile determinare dove finisce la stringa. – jens

0

Si può sostituire gli spazi con alcuni altri personaggi in uscita come:

mysql> SELECT REPLACE(' ', ' ', '|'); 

+--------------------------+ 
| REPLACE(' ', ' ', '|') | 
+--------------------------+ 
| |||      | 
+--------------------------+ 
1 row in set (0.00 sec) 
Problemi correlati