2010-10-19 17 views
7

Tengo una enorme tabla mysql (llamada tcountriesnew) y una columna (llamada slogen, blob type). En cada uno de esos slogen blobs Me gustaría reemplazar una palabra, por ejemplo: banana a apple.Reemplazar una palabra en texto BLOB por MySQL

Desafortunadamente traté de imprimir todas las filas con word banana, y no funcionó.

select * from tcountriesnew where slogen like '%banana%';

Por favor, ayúdame.

  • Lo que me perdí, ¿cuál es el problema con mi consulta?
  • ¿Cómo puedo reemplazar el texto en blob?

Respuesta

7

depende de lo que entendemos por "reemplazar" espectáculo en el selecto:

select replace(slogen, 'bananas', 'apples') from tcountriesnew where slogen like '%bananas%'; 

o actualizar datos en una tabla:

update tcountriesnew set slogen=replace(slogen, 'bananas', 'apples') where slogen like '%bananas%'; 

cierto. ¿Por qué está usando blob para texto? Debe utilizar el tipo text para datos textuales y blob para datos binarios.

+1

En algunos casos se requiere para guardar textos BLOB. En mi caso, por la razón que sea, los desarrolladores de Drupal 7 eligen usar un blob para todas las columnas TEXT, generalmente esto queda fuera del control del desarrollador. – Druvision

+0

Si desea admitir todos los idiomas, puede que sea necesario 'BLOB'. Tal vez. Para la mayoría de los lenguajes, 'TEXT' está bien. Pierdes muchas funciones cuando usas 'BLOB' ya que esencialmente el texto no se ve como el lado del servidor de texto. Es por eso que recomendaría usar 'TEXT'. Si todavía hay algunos problemas con algunos idiomas, probablemente se solucionarán en el servidor MySQL de todos modos. – Nux

+0

@Nux: ¿Qué sucede si solo se debe reemplazar una vez de plátanos en lugar de todos? Digamos que está en la posición 2380. Cómo hacerlo – Learner

0

¿Qué versión estás utilizando? Tal vez es este error: . De lo contrario, intente con cast su columna de blob.

1

En algunos casos, es necesario para guardar los textos BLOB. En mi caso, por la razón que sea, los desarrolladores de Drupal 7 eligen usar un blob para todas las columnas TEXT, esto queda fuera del control del desarrollador.

Para convertir una burbuja en texto, use la función de conversión MySql. Luego debe guardarlo en la base de datos y convertirlo de nuevo en blob, pero MySQL lo maneja automáticamente. Entonces la siguiente consulta haría el truco:

UPDATE tcountriesnew 
SET slogen = replace(CONVERT(slogen USING utf8), 'bananas', 'apples') 
WHERE slogen LIKE '%bananas%'; 

En MySQL 5.5, esto resolvió mi problema por completo.

Además, configure your PhpMyAdmin to show Blob data