Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema al permitir espacios en blanco

Estas en el tema de Problema al permitir espacios en blanco en el foro de Mysql en Foros del Web. si alguien me puede ayudarme a registrar un campo de tipo varchar que me permita poner un registro con espacios en blaco al final de ...
  #1 (permalink)  
Antiguo 17/11/2010, 12:26
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Pregunta Problema al permitir espacios en blanco

si alguien me puede ayudarme a registrar un campo de tipo varchar que me permita poner un registro con espacios en blaco al final de la cadena

por ejemplo mi campo tipo varchar se llama codigo_de_barras

y el registro que necesito ingresar es "gh45462jsk " el detalle esta en que cuando lo ingreso se registra como "gh45462jsk" y necesito que me respete esos espacios en blanco ya que sin ellos el registro no me sirve.


de antemano gracias
  #2 (permalink)  
Antiguo 17/11/2010, 12:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Eso depende de la versión de MySQL que estés usando:
Cita:
Los valores VARCHAR no se cortan al almacenarse. El tratamiento de espacios al final depende de la versión. Desde MySQL 5.0.3, los espacios finales se almacenan con el valor y se retornan, según el estándar SQL. Antes de MySQL 5.0.3, los espacios finales se eliminan de los valores cuando se almacenan en una columna VARCHAR, esto significa que los espacios también están ausentes de los valores retornados.
Deberías probar usar campos de tipo BINARY y VARBINARY, si no te resulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/11/2010, 12:59
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

gracias por responder pero tengo la version 5.1.51 y por lo que dices no deveria de tener ese error voy a probar con un tipo de dato binary y varbinary como me aconsejas a ver si resulta

gracias por tomarte el tiempo
  #4 (permalink)  
Antiguo 17/11/2010, 13:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Bueno, tal parece que para la versión 5.1.x, el funcionamiento volvió a cambiar, conforme dice el manual:
Cita:
Para columnas VARCHAR, los espacios adicionales en exceso de la longitud de la columna se truncan antes de la inserción y se genera una advertencia, independientemente del modo de SQL en uso. Para columnas CHAR, el truncamiento del exceso de espacios finales de los valores insertados se realizasin advertencias, independientemente del modo de SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 17/11/2010, 13:31
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

mmmm pues entonces tendre q cambiar de version o seguir intentando con otros tipos de datos


gracias x la ayuda gnzsoloyo
  #6 (permalink)  
Antiguo 29/11/2010, 12:43
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

aun no he podido solucionar mi problema seghun el manual que mensiona gnzsoloyo se puede hacer usando un campo de tipo char.

ya lo he intentado y aun no me respeta los espacios que necesito si alguien sabe como le puedo hacer se los agradecere por siempre
  #7 (permalink)  
Antiguo 29/11/2010, 12:51
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 8
Respuesta: Problema al permitir espacios en blanco

hola, me late que estas algo confundido, los varchar nunca te permitiran hacer tal cosa.

es su lugar usa un tipo de datos CHAR.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #8 (permalink)  
Antiguo 29/11/2010, 12:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Se ve que no estás comprendiendo bien lo que te estoy postenado. Bueno, te lo pondré con todas las letras:
1) Las columnas VARCHAR o CHAR eliminan cualquier espacio en blanco que haya al final de un texto. En todos los casos, y no lo puedes evitar. Así funciona MySQL.
2) Las columnas VARCHAR devuleven, en ese caso, un warning de truncamiento de datos.
3) Las CHAR lo truncan sin decirte nada (no warning)

En resumen: No hay forma, en MySQL de permitir que haya al final un espacio vacío, al menos no en las versiones 5.1.x en adelante.

La única forma de usar espacios al final de un texto sería con campos BLOB, porque esos campos no guardan el texto exactamente, sino su representación binaria.

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 29/11/2010, 12:58
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 8
Respuesta: Problema al permitir espacios en blanco

umm, honestamente no sabia eso, no obstante, leete esto:

http://dev.mysql.com/doc/refman/5.0/es/char.html

y esta es la doc de la version 5.1 en adelante:
http://dev.mysql.com/doc/refman/5.1/en/char.html
lo charro es que ellos especifican que en teoria, con el tipo de datos char deberias poder hacerlo y repito puede ser que me este equivocando jejejeje.

saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #10 (permalink)  
Antiguo 29/11/2010, 13:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Perdón... pero son exactamente los mismos documentos que te menciono:
Cita:
For VARCHAR columns, trailing spaces in excess of the column length are truncated prior to insertion and a warning is generated, regardless of the SQL mode in use. For CHAR columns, truncation of excess trailing spaces from inserted values is performed silently regardless of the SQL mode.
Traduccion:
Cita:
Para columnas VARCHAR, los espacios adicionales en exceso de la longitud de la columna se truncan antes de la inserción y se genera una advertencia, independientemente del modo de SQL en uso. Para columnas CHAR, el truncamiento del exceso de espacios finales de los valores insertados se realizasin advertencias, independientemente del modo de SQL.
Y en 5.0.x:
Cita:
Los valores VARCHAR no se cortan al almacenarse. El tratamiento de espacios al final depende de la versión. Desde MySQL 5.0.3, los espacios finales se almacenan con el valor y se retornan, según el estándar SQL. Antes de MySQL 5.0.3, los espacios finales se eliminan de los valores cuando se almacenan en una columna VARCHAR, esto significa que los espacios también están ausentes de los valores retornados.
¿Estamos entendiendo diferentes cosas sobre el mismo texto, acaso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 29/11/2010, 13:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Según lo que ellos recomiendan (lo mismo que te digo en un post) es que uses para esos casos o TEXT o BLOB.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 29/11/2010, 13:14
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

ya he usado text y blob y en ninguno me deja hacer ese tipo de cosas lo que pasa es que necesito esos espacios en blanco ya que utilizo un sw de etiquetas y cuando se valida la informacion que necesita el codigo de barras para crearse, este me pone una letra al final de la cadena por lo tanto necesito esos espacios en blaco xq tambien los toma en cuenta
  #13 (permalink)  
Antiguo 29/11/2010, 13:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Para almacenar un codigo de barras normalmente no requieres espacios en blanco porque los manejas directamente en la aplicación, y sólo almacenas el número (formateado o no) en la base de datos, y en todo caso el dígito de comprobación en otro campo...
¿Cuál de todos los conjuntos de CB es el que estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 29/11/2010, 13:54
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

ok el codigo q ocupo es el code 39 y el sw que utilizo es el labelview v8 que ya hace la verificacion y pone el digito de verificacion el mismo sw x lo tanto no debo guardar ese digito aparte
  #15 (permalink)  
Antiguo 30/11/2010, 09:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al permitir espacios en blanco

Bien. Finalmente tomé el toro por las astas y me puse a hacer una prueba paso a paso de tu problema:

1) Descargué e instalé el MySQL 5.1.53-community, es decir, la última versión disponible.

2) Cree una tabla con un sólo campo de tipo VARCHAR(100). Má sno hacía falta para la prueba.
Código MySQL:
Ver original
  1. CREATE TABLE test.tabla(id VARCHAR(100));
3) Inserté un registro de 11 caracteres, el último de los cuales era un espacio en blanco:
Código MySQL:
Ver original
  1. mysql> INSERT INTO TEST.TABLA VALUES('0123456789 ');
  2. Query OK, 1 row affected (0.00 sec)
  3.  
  4. mysql> SELECT * FROM TEST.TABLA;
  5. +-------------+
  6. | id          |
  7. +-------------+
  8. | 0123456789  |
  9. +-------------+
  10. 1 row in set (0.00 sec)
4) verifiqué la longitud del contenido del campo, obteniendo los 11 caracteres que indiqué:
Código MySQL:
Ver original
  1. mysql> SELECT LENGTH(ID) id  FROM TEST.TABLA;
  2. +------+
  3. | id   |
  4. +------+
  5. |   11 |
  6. +------+
  7. 1 row in set (0.00 sec)
5) Realicé una segunda verificación, esta vez indicando que se eliminasen los espacios adelate o arás del texto que exista en el campo, dando como resultado un valor menor y como conclusión que el espacio en blanco efectivamente se almacenó:
Código MySQL:
Ver original
  1. mysql> SELECT LENGTH(TRIM(ID)) id  FROM TEST.TABLA;
  2. +------+
  3. | id   |
  4. +------+
  5. |   10 |
  6. +------+
  7. 1 row in set (0.00 sec)

Conclusiones a primera instancia:
1) Si en tu caso el campo no puede ser recuperado con el espacio en blanco incluido, ese espacio no se halla almacenado en la tabla.
2) Es altamente probable que alguno de los pasos anteriores o posteriores al almacenamiento esté descartando el espacio, ya que incluso en la versión más actualizada (y pese a lo que dice en el manual de referencia), MySQL no elimina ese espacio.

¿Dudas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 30/11/2010, 11:12
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años
Puntos: 16
Respuesta: Problema al permitir espacios en blanco

probe tal cual lo haces usando el mysql 5.1.51 y si hace exactamente lo que indicas, tambien probe usando los tipos blob y text, se supone que tambien guarda los espacios en blanco, de echo tambien hice lo de tu 4) y me da la longitud que es (12 en mi caso) pero cuando lo huso en el sw no lo respeta, creo que ya es problema del sw de etiquetacion que se esta realizando

muchas gracias por tomarte el tiempo de orientarme y por hacer la prueba con los valores q posteaste

voy a intentar buscar la forma de que el sw me acepte esos espacios, si es q la hay

Etiquetas: blanco, espacios, permitir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:58.