Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como combinar regex + UPDATE no MySQL para adicionar um espaço a FirstnameLastname


Primeiro, a correspondência de padrões usando REGEXP não diferencia maiúsculas de minúsculas. Então você tem que usar BINARY.

Não tenho certeza se existe uma maneira melhor de fazer isso no MySQL, mas esta é uma. Execute as seguintes consultas para cada alfabeto de A a Z. Eu dei as consultas para A, B, C, D, E, Y e Z. Copie para todos os outros alfabetos. Depois de concluir a execução de todos eles, você terá um espaço entre o nome e o sobrenome
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]';

Observe o uso de BINARY nos exemplos de consulta acima.

Outra maneira pode ser escrever um script PHP para ler todos os post_title e, em seguida, use funções de expressão regular PHP poderosas para adicionar espaços e atualizá-los de volta ao banco de dados.

Espero que isto ajude!

EDITAR :Oh! Esqueci que o banco de dados também tem entradas com espaços e elas precisam ser ignoradas. Por favor, use esta consulta em vez disso:
UPDATE `wp_posts` 
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';