sql >> Databasteknik >  >> RDS >> Mysql

Hur man kombinerar regex + UPPDATERING i MySQL för att lägga till ett blanksteg till Förnamn Efternamn

För det första är mönstermatchning med REGEXP skiftlägesokänslig. Så du måste använda BINARY.

Jag är inte säker på om det finns ett bättre sätt att göra detta i MySQL, men det här är ett. Kör följande frågor för vart och ett av alfabetet från A till Ö. Jag har gett frågorna för A, B, C, D, E, Y och Z. Kopiera för alla andra alfabet. När du har kört dem alla kommer du att ha ett mellanslag mellan för- och efternamnet

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

Observera användningen av BINARY i ovanstående frågeexempel.

Ett annat sätt kan vara att skriva ett PHP-skript för att läsa alla post_title och använd sedan kraftfulla PHP reguljära uttrycksfunktioner för att lägga till mellanslag och uppdatera dem tillbaka till databasen.

Hoppas detta hjälper!

REDIGERA :Åh! Jag glömde att databasen också har poster med mellanslag och de måste ignoreras. Använd den här frågan istället:

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



  1. Hur man formaterar siffror med ett minus/plus-tecken i Oracle

  2. Hur kan jag felsöka varför den enklaste MySQL-frågan returnerar falskt?

  3. Exportera data från MySQL till Excel med UTF-8-kodning

  4. MySQL NOT IN Fråga mycket långsammare efter MySQL-uppgradering