Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So kombinieren Sie Regex + UPDATE in MySQL, um FirstnameLastname ein Leerzeichen hinzuzufügen

Erstens wird beim Musterabgleich mit REGEXP die Groß-/Kleinschreibung nicht beachtet. Sie müssen also BINARY verwenden.

Ich bin mir nicht sicher, ob es in MySQL einen besseren Weg gibt, dies zu tun, aber dies ist einer. Führen Sie die folgenden Abfragen für jedes Alphabet von A bis Z aus. Ich habe die Abfragen für A, B, C, D, E, Y und Z angegeben. Bitte kopieren Sie für alle anderen Alphabete. Sobald Sie alle ausgeführt haben, sehen Sie ein Leerzeichen zwischen dem Vor- und Nachnamen

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]';

Bitte beachten Sie die Verwendung von BINARY in den obigen Abfragebeispielen.

Eine andere Möglichkeit wäre, ein PHP-Skript zu schreiben, um alle post_title zu lesen und verwenden Sie dann leistungsstarke PHP-Funktionen für reguläre Ausdrücke, um Leerzeichen hinzuzufügen und sie wieder in der Datenbank zu aktualisieren.

Hoffe, das hilft!

BEARBEITEN :Oh! Ich habe vergessen, dass die Datenbank auch Einträge mit Leerzeichen enthält und diese ignoriert werden müssen. Bitte verwenden Sie stattdessen diese Abfrage:

UPDATE `wp_posts` 
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';