2012-05-05 13 views
8

Quiero quitar algo de mi mesa 1)32)121)1000) ... el formato es number + )actualización de MySQL con expresión regular

Probé este código.

UPDATE articles SET 
title= REPLACE(title,'\d)', '') 
WHERE title regexp "\d)*" 

No pasó nada en phpmyadmin, cómo escribir correcta? Gracias.

Respuesta

4

No puede: Mysql no es compatible con la sustitución basada en expresiones regulares.

Consulte this SO question para una solución temporal.

+0

Así que cómo reemplazar simplemente '121)'? 'UPDATE articles SET title = REPLACE (title, '121)', '') WHERE title regexp" 121) * "' aún no funciona, ¿debería agregar-barras inclinadas al ')'? – cj333

+2

Simplemente use 'like':' UPDATE articles SET title = REPLACE (title, '121)', '') WHERE title like '% 121)%'; '. O simplemente omita la cláusula where, filas sin '121)' no se cambiarán. – Bohemian

0

Como alternativa, dependiendo del tamaño de la tabla, puede hacer una solución con la función substring.

1

Finalmente, utilizo algunos php para resolver este problema con un método rápido.

for ($i=1; $i<=9999; $i++){ 
$my_regex = $i.')'; 
mysql_query("UPDATE articles SET title = REPLACE(title,'".$i."', '') where title like '%".$i."%'"); 
} 
+4

Esto es totalmente malo y atemorizante, pero creo que sirvió para el propósito ... –

Cuestiones relacionadas