首先,使用REGEXP的模式匹配是不区分大小写的。所以你必须使用BINARY。
我不确定在MySQL中是否有更好的方法来做到这一点,但这是一个。针对从A到Z的每个字母表运行以下查询。我已经为A,B,C,D,E,Y和Z提供了查询。请复制所有其他字母。一旦你完成了运行所有这些,你将有姓和名
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]';
请注意BINARY在上面的查询示例使用之间的空间。
另一种方式可能是编写一个PHP脚本来读取所有post_title
,然后使用强大的PHP正则表达式函数来添加空格并将其更新回数据库。
希望这会有所帮助!
编辑:哦!我忘记了数据库也有空格的条目,他们需要被忽略。请使用此查询来代替:
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';
非常感谢。 为了简单起见,我最终把你提供的SQL查询放到了一个php循环中。(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U, V,W,X,Y,Z); 的foreach($ ARR AS $值){$ =即updateSQL的sprintf(“UPDATE'wp_posts'
SET'post_title' = TRIM(REPLACE('post_title', '$值', '$值')) WHERE 'post_title' REGEXP BINARY'[^] [$ value]';“); echo“
$ updateSQL
”; mysql_select_db($ database,$ connect); $ Result1 = mysql_query($ updateSQL,$ connect)或die(mysql_error()); } – MaxRocket这是一个完美的事情@MaxRocket :-) – Abhay