Za prvé, porovnávání vzorů pomocí REGEXP nerozlišuje velká a malá písmena. Takže musíte použít BINARY.
Nejsem si jistý, jestli existuje lepší způsob, jak to udělat v MySQL, ale toto je jeden. Spusťte následující dotazy pro každou abecedu od A do Z. Zadal jsem dotazy pro A, B, C, D, E, Y a Z. Zkopírujte prosím pro všechny ostatní abecedy. Jakmile je všechny dokončíte, budete mít mezeru mezi jménem a příjmením
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]';
Všimněte si prosím použití BINARY ve výše uvedených příkladech dotazů.
Dalším způsobem může být napsat PHP skript pro čtení všech post_title
a poté pomocí výkonných funkcí PHP regulárních výrazů přidat mezery a aktualizovat je zpět do databáze.
Doufám, že to pomůže!
UPRAVIT :Ach! Zapomněl jsem, že databáze má také položky s mezerami a je třeba je ignorovat. Místo toho použijte tento dotaz:
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';