Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách kết hợp regex + UPDATE trong MySQL để thêm khoảng trắng vào FirstnameLastname

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lỗi:'Không thể kết nối với máy chủ MySQL cục bộ thông qua socket' /var/run/mysqld/mysqld.sock '(2)' - Thiếu /var/run/mysqld/mysqld.sock

  2. Chỉ mục tập hợp ký tự ban đầu không xác định '255' nhận được từ máy chủ

  3. Lỗi 1064 trong TẠO BẢNG ... TYPE =MYISAM

  4. MySQL chọn nhanh 10 hàng ngẫu nhiên từ 600 nghìn hàng

  5. Biến một cột dài của bảng thành bảng có nhiều cột