Bản tóm tắt. trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng hàm chuỗi REPLACE của MySQL để thay thế một chuỗi con bằng một chuỗi khác trong một chuỗi
Giới thiệu về chức năng chuỗi REPLACE của MySQL
MySQL cung cấp cho bạn một hàm chuỗi hữu ích có tên là REPLACE
cho phép bạn thay thế một chuỗi trong một cột của bảng bằng một chuỗi mới
Cú pháp của hàm REPLACE
như sau
Code language: SQL [Structured Query Language] [sql]
REPLACE[str,old_string,new_string];
Hàm REPLACE
có ba tham số. Nó thay thế
1 bằngCode language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
2 trongCode language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
3
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
Code language: SQL [Structured Query Language] [sql]
Lưu ý có một câu lệnh còn được gọi là REPLACE được sử dụng để chèn hoặc cập nhật dữ liệu. Bạn không nên nhầm lẫn giữa câu lệnh REPLACE
với hàm chuỗi REPLACE
Hàm REPLACE
rất tiện dụng để tìm kiếm và thay thế văn bản trong bảng chẳng hạn như cập nhật URL lỗi thời, sửa lỗi chính tả, v.v.
Cú pháp sử dụng hàm REPLACE
trong câu lệnh CẬP NHẬT như sau
Code language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
Lưu ý rằng khi tìm kiếm văn bản để thay thế, MySQL sử dụng khớp phân biệt chữ hoa chữ thường để thực hiện tìm kiếm chuỗi được thay thế
Ví dụ hàm chuỗi REPLACE của MySQL
Ví dụ bạn muốn sửa lỗi chính tả trong bảng
3 trong cơ sở dữ liệu mẫu thì bạn sử dụng hàm
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
Code language: SQL [Structured Query Language] [sql]
REPLACE
như sauCode language: SQL [Structured Query Language] [sql]
UPDATE products SET productDescription = REPLACE[productDescription, 'abuot', 'about'];
Truy vấn tìm tất cả các trường hợp mắc lỗi chính tả
5 và thay thế nó bằng từ đúng về trong cộtCode language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
6 của bảngCode language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
3Code language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
Điều rất quan trọng cần lưu ý là trong hàm REPLACE
, tham số đầu tiên là tên cột không có dấu ngoặc kép [“]. Nếu bạn đặt dấu ngoặc kép cho tên trường như “field_name”, truy vấn sẽ cập nhật nội dung của cột đó thành “field_name”, điều này gây mất dữ liệu không mong muốn
Hàm REPLACE
không hỗ trợ biểu thức chính quy, vì vậy nếu bạn cần thay thế một chuỗi văn bản bằng một mẫu, bạn cần sử dụng hàm do người dùng xác định [UDF] của MySQL từ thư viện bên ngoài, hãy xem tại đây MySQL UDF với Regex
Một tùy chọn là cập nhật cột. Tất cả các bước được đề cập có thể được tìm thấy trên câu đố này và vui lòng luôn sử dụng môi trường thử nghiệm trước khi sử dụng các bước được đề xuất khi sản xuất
Giả sử chúng ta có bảng sau
create table test[
dataval varchar[255] ];
insert into test values
['"item1":"stuff","item2":"12345","item3":0,"item4":"this field contains some data that has "quotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"'],
['"item1":"stuff","item2":"12345","item3":0,"item4":"this uotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"'];
Đề xuất bên dưới có tính đến việc tồn tại
1 [sẽ là phần đầu] vàCode language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;
2 [sẽ là phần cuối của phần chuỗi mà chúng tôi sẽ cập nhật]Code language: SQL [Structured Query Language] [sql]
UPDATE tbl_name SET field_name = REPLACE[field_name, string_to_find, string_to_replace] WHERE conditions;