Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment combiner regex + UPDATE dans MySQL pour ajouter un espace à FirstnameLastname

Tout d'abord, la correspondance de modèle à l'aide de REGEXP est insensible à la casse. Vous devez donc utiliser BINARY.

Je ne sais pas s'il existe une meilleure façon de procéder dans MySQL, mais celle-ci en est une. Exécutez les requêtes suivantes pour chacun des alphabets de A à Z. J'ai donné les requêtes pour A, B, C, D, E, Y et Z. Veuillez copier pour tous les autres alphabets. Une fois que vous avez terminé de les exécuter tous, vous aurez un espace entre le prénom et le nom

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

Veuillez noter l'utilisation de BINARY dans les exemples de requête ci-dessus.

Une autre façon pourrait être d'écrire un script PHP pour lire tous les post_title puis utilisez de puissantes fonctions d'expression régulière PHP pour ajouter des espaces et les mettre à jour dans la base de données.

J'espère que cela vous aidera !

MODIFIER :Oh! J'ai oublié que la base de données contient également des entrées avec des espaces et qu'elles doivent être ignorées. Veuillez plutôt utiliser cette requête :

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