2012-05-05 21 views
8

Chcę usunąć coś z moim stole 1)32)121)1000) ... format jest number + )Aktualizacja mysql z regexp

Próbowałem tego kodu.

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

Nic się nie stało w phpmyadmin, jak napisać poprawne? Dzięki.

Odpowiedz

4

Nie możesz: MySQL nie obsługuje wymiany opartej na regex.

Aby obejść, obejrzyj this SO question.

+0

jak wymienić tylko '121)'? 'AKTUALIZUJ artykuły ZESTAW title = REPLACE (title, '121)', '') GDZIE tytuł wyrażeń regularnych" 121) * "' nadal nie działa, czy powinienem dodać-ukośniki do ')'? – cj333

+2

Po prostu użyj 'like':' UPDATE articles SET title = REPLACE (title, '121)', '') WHERE title, jak '% 121)%'; '. Lub po prostu pomiń klauzul where - wiersze bez '121)' nie zostaną zmienione. – Bohemian

0

Alternatywnie, w zależności od wielkości stołu, można wykonać obejście z funkcją substring.

1

Wreszcie, używam php, aby rozwiązać ten problem za pomocą szybkiej metody.

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

To jest całkowicie złe i przerażające, ale wydaje mi się, że służyło celowi ... –