For det første er mønstermatchning ved hjælp af REGEXP ufølsom over for store og små bogstaver. Så du er nødt til at bruge BINÆR.
Jeg er ikke sikker på, om der er en bedre måde at gøre dette på i MySQL, men dette er en. Kør følgende forespørgsler for hvert af alfabeterne fra A til Z. Jeg har givet forespørgslerne for A, B, C, D, E, Y og Z. Kopier venligst for alle andre alfabeter. Når du har gennemført dem alle, vil du have et mellemrum mellem for- og efternavne
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]';
Bemærk venligst brugen af BINARY i ovenstående forespørgselseksempler.
En anden måde kan være at skrive et PHP-script for at læse alle post_title
og brug derefter kraftfulde PHP regulære udtryksfunktioner til at tilføje mellemrum og opdatere dem tilbage til databasen.
Håber dette hjælper!
REDIGER :Åh! Jeg glemte, at databasen også har indgange med mellemrum, og de skal ignoreres. Brug venligst denne forespørgsel i stedet:
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';