Esto implica fuertemente que sus datos no se normaliza para empezar. Realmente deberías arreglar eso.
Somteh = cosa como esto debería funcionar (NB no se ha mencionado de su uso de cualquier otro idioma - por lo que su escrito como un procedimiento almacenado de MySQL)
create procedure replace_all(find varchar(255),
replce varchar(255),
indb varcv=char(255))
DECLARE loopdone INTEGER DEFAULT 0;
DECLARE currtable varchar(100);
DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name
FROM information_schema.tables t,
information_schema.columns c
WHERE t.table_schema=indb
AND c.table_schema=indb
AND t.table_name=c.table_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopdone = 1;
OPEN alltables;
tableloop: LOOP
FETCH alltables INTO currtable, currcol;
IF (loopdone>0) THEN LEAVE LOOP;
END IF;
SET stmt=CONCAT('UPDATE ',
indb, '.', currtable, ' SET ',
currcol, ' = word_sub(\'', find,
'\','\'', replce, '\') WHERE ',
currcol, ' LIKE \'%', find, '%\'');
PREPARE s1 FROM stmt;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END LOOP;
END //
Lo dejo a usted para trabajar cómo declarar la función word_sub: he hecho suficiente programación gratuita aquí.
no estoy seguro de si MySQL permite eso, pero sería altamente dudar de sí que parece una gran tormenta de fuego de seguridad a punto de ocurrir. –
jeje bien, el problema es que no sé qué tabla tiene la información y hay una mierda de tablas. – Andy
Para saber qué tablas tienen los datos, puede ejecutar una búsqueda de base de datos completa que le mostrará qué tablas tienen datos que coinciden con sus criterios de búsqueda. En phpmyadmin, vaya también /phpmyadmin/db_search.php –