2012-01-20 8 views
5

Si los datos se inserta esta manera,¿Cómo puedo eliminar bytes NULL acolchados usando SELECT en MySQL

insert into `t` (`date`, `data`) values (now(), lpad('Hello', 4096, CHAR(0x00))); 

¿Cómo se retrive que la eliminación de caracteres NULL de data columna. De hecho, estoy buscando algo que haga lo contrario de lo que hace LPAD.

La definición de la tabla es,

create table `t` (
    `id` int auto_increment, 
    `date` datetime, 
    `data` blob, 
    primary key (`id`) 
); 

pregunta generalizada es, ¿Cómo puedo eliminar un carácter específico, ya sea inicial o final de una cadena?

Respuesta

8

Uso trim(), que viene en 3 sabores:

select trim(leading CHAR(0x00) from data) 

o

select trim(trailing CHAR(0x00) from data) 

o

select trim(both CHAR(0x00) from data) 
+0

OMG! cada vez que busco el manual, terminé leyendo [LTRIM()] (http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim) –

1

Probablemente querrá usar TRIM, como en;

select id, date, trim(trailing char(0) from data) as data from t;