För det första är mönstermatchning med REGEXP skiftlägesokänslig. Så du måste använda BINARY.
Jag är inte säker på om det finns ett bättre sätt att göra detta i MySQL, men det här är ett. Kör följande frågor för vart och ett av alfabetet från A till Ö. Jag har gett frågorna för A, B, C, D, E, Y och Z. Kopiera för alla andra alfabet. När du har kört dem alla kommer du att ha ett mellanslag mellan för- och efternamnet
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[A]';
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'B', ' B'))
WHERE `post_title` REGEXP BINARY '[B]';
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'C', ' C'))
WHERE `post_title` REGEXP BINARY '[C]';
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'D', ' D'))
WHERE `post_title` REGEXP BINARY '[D]';
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'E', ' E'))
WHERE `post_title` REGEXP BINARY '[E]';
...
...
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'Y', ' Y'))
WHERE `post_title` REGEXP BINARY '[Y]';
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'Z', ' Z'))
WHERE `post_title` REGEXP BINARY '[Z]';
Observera användningen av BINARY i ovanstående frågeexempel.
Ett annat sätt kan vara att skriva ett PHP-skript för att läsa alla post_title
och använd sedan kraftfulla PHP reguljära uttrycksfunktioner för att lägga till mellanslag och uppdatera dem tillbaka till databasen.
Hoppas detta hjälper!
REDIGERA :Åh! Jag glömde att databasen också har poster med mellanslag och de måste ignoreras. Använd den här frågan istället:
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';