sql >> Base de Datos >  >> RDS >> Mysql

Cómo combinar expresiones regulares + ACTUALIZAR en MySQL para agregar un espacio a FirstnameLastname

En primer lugar, la coincidencia de patrones mediante REGEXP no distingue entre mayúsculas y minúsculas. Así que tienes que usar BINARIO.

No estoy seguro de si hay una mejor manera de hacer esto en MySQL, pero esta es una. Ejecute las siguientes consultas para cada uno de los alfabetos de la A a la Z. He dado las consultas para A, B, C, D, E, Y y Z. Copie para todos los demás alfabetos. Una vez que haya terminado de ejecutarlos todos, tendrá un espacio entre el nombre y el apellido

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

Tenga en cuenta el uso de BINARY en los ejemplos de consulta anteriores.

Otra forma podría ser escribir un script PHP para leer todos los post_title y luego use las potentes funciones de expresiones regulares de PHP para agregar espacios y actualizarlos nuevamente en la base de datos.

¡Espero que esto ayude!

EDITAR :¡Vaya! Olvidé que la base de datos también tiene entradas con espacios y deben ignorarse. Utilice esta consulta en su lugar:

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