Đầu tiên, đối sánh mẫu bằng REGEXP không phân biệt chữ hoa chữ thường. Vì vậy, bạn phải sử dụng BINARY.
Tôi không chắc liệu có cách nào tốt hơn để thực hiện việc này trong MySQL hay không nhưng đây là một cách. Chạy các truy vấn sau cho từng bảng chữ cái từ A đến Z. Tôi đã đưa ra các truy vấn cho A, B, C, D, E, Y và Z. Vui lòng sao chép cho tất cả các bảng chữ cái khác. Khi bạn đã hoàn thành việc chạy tất cả chúng, bạn sẽ có khoảng cách giữa họ và tên
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]';
Vui lòng lưu ý cách sử dụng BINARY trong các ví dụ truy vấn ở trên.
Một cách khác có thể là viết một tập lệnh PHP để đọc tất cả post_title
và sau đó sử dụng các hàm biểu thức chính quy PHP mạnh mẽ để thêm khoảng trắng và cập nhật chúng trở lại cơ sở dữ liệu.
Hy vọng điều này sẽ hữu ích!
CHỈNH SỬA :Ồ! Tôi quên rằng cơ sở dữ liệu cũng có các mục nhập có dấu cách và chúng cần được bỏ qua. Vui lòng sử dụng truy vấn này thay thế:
UPDATE `wp_posts`
SET `post_title` = TRIM(REPLACE(`post_title`, 'A', ' A'))
WHERE `post_title` REGEXP BINARY '[^ ][A]';