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

Limpiar o eliminar caracter de tabla

Estas en el tema de Limpiar o eliminar caracter de tabla en el foro de Mysql en Foros del Web. No se si sera realizable en MySQL pero tengo una tabla llamada Soltera donde tengo el atributo nombre, el problema es que de la manera ...
  #1 (permalink)  
Antiguo 07/06/2008, 19:47
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Limpiar o eliminar caracter de tabla

No se si sera realizable en MySQL pero tengo una tabla llamada Soltera
donde tengo el atributo nombre, el problema es que de la manera en que estan guardados los apellidos no puedo compararlos con otras tablas.

Los apellidos estan guardados entre parentesis y con un guion ej:

(-perez)
(-vera)

No se si abra alguna manera de eliminar esos () y el guion directamente desde mysql o tendre que hacerlo con algun lenguaje de programacion, no puedo hacerlo manual porque son mas de un millon.

Alguna sugerencia, gracias.
  #2 (permalink)  
Antiguo 07/06/2008, 21:07
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
Respuesta: Limpiar o eliminar caracter de tabla

Hola,

Échale un ojo a la función TRIM:
http://mysql.conclase.net/curso/index.php?fun=TRIM
  #3 (permalink)  
Antiguo 08/06/2008, 05:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Limpiar o eliminar caracter de tabla

No es necesario eliminar los paréntesis, pero si quieres hacerlo con TRIM, como te ha recomendado jariza, y con una sola consulta de actualización, esto te quitará todos los (- iniciales y ) finales.

UPDATE nombretabla SET nombrecampo = TRIM(leading '(-' from TRIM(trailing ')' FROM nombrecampo))

Si no quieres eliminar los paréntesis, pero quieres comparar los datos

SELECT * FROM nombretabla WHERE TRIM(leading '(-' from TRIM(trailing ')' FROM nombrecampo)) = 'Martínez'

Esto debería encontrarte (-Martínez, (-Martínez), Martínez)

aunque para eso te bastaría con LIKE '%Martínez%'
  #4 (permalink)  
Antiguo 09/06/2008, 09:24
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Limpiar o eliminar caracter de tabla

Muchas gracias, ya lo solucione de otra manera, simplemente usando la sentencia REPLACE, reemplaze los ()- por espacios y con eso ya me dejo comparar los campos como queria, agradezco de todas maneras sus respuestas.

Veo que habian varias soluciones.
  #5 (permalink)  
Antiguo 09/06/2008, 10: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: 16 años, 5 meses
Puntos: 2658
Respuesta: Limpiar o eliminar caracter de tabla

Si los reemplazas por espacios puedes tener problemas eventualmente, porque en comparaciones bit a bit un espacio vacío es el ASCII 32, y una A el ASCII 65.
Un espacio vacío no es NULL, es un caracter, y como tal estás poniendo basura en el campo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/06/2008, 11:00
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Limpiar o eliminar caracter de tabla

De acuerdo contigo pero apenas puedo alterar la base de datos, de echo si la vieras te daria un susto, esta llena de basura en todos lados.
  #7 (permalink)  
Antiguo 11/06/2008, 11:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Limpiar o eliminar caracter de tabla

Sí, pero ¿para qué acumular más basura?

con UPDATE nombretabla SET nombrecampo = TRIM(nombrecampo)
quitarás, creo, los espacios en blanco que has añadido al principio y final con la sustitución de los paréntesis.
  #8 (permalink)  
Antiguo 13/06/2008, 10:08
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Limpiar o eliminar caracter de tabla

Te entiendo perfectamente si el problema es que estoy limitado al menos numero de operaciones posibles en la bd, de igual manera acabo de probar la sentencia en una copia de la bd personal y funciono perfectamente eliminando los espacios.
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 21:20.