Trình chỉnh sửa mã và trình xử lý văn bản ngày nay đi kèm với tính năng tìm kiếm và thay thế. Sẽ rất hữu ích khi bạn cần thay đổi một từ hoặc một nhóm từ. Chúng tôi không muốn vứt bỏ tác phẩm đã viết của mình vì một vấn đề nhỏ hoặc thay đổi.
Điều tương tự cũng áp dụng cho dữ liệu của chúng tôi. Người dùng sẽ nguyền rủa chúng tôi nếu chúng tôi yêu cầu họ chỉnh sửa những gì cần được đổi tên. Đó là lý do tại sao tính năng tìm kiếm và thay thế cũng có sẵn để thay thế các văn bản được viết trong cơ sở dữ liệu của chúng tôi. Đây là lệnh REPLACE trong SQL.
Cú pháp REPLACE trong SQL như sau:
THAY THẾ (
Lưu ý rằng tất cả các tham số là bắt buộc.
Nhưng có thể có một số lưu ý. Bằng cách này, bạn có thể tìm ra cách tránh thay thế các từ sai hoặc cách tránh chèn các bản ghi trùng lặp trong SQL Server. Hoặc, có thể, không thay thế các từ thích hợp. Cuối cùng thì làm rối tung dữ liệu của bạn.
Bạn là người mới sử dụng SQL REPLACE? Đây là một bảng gian lận MIỄN PHÍ dành cho bạn. Chỉ cần nhập địa chỉ email của bạn vào bên dưới và chúng tôi sẽ gửi địa chỉ email đó đến thẳng hộp thư đến của bạn.
Nghe hay đấy? Hãy cùng tìm hiểu.
[sendpulse-form id =”12251 ″]
1. SQL REPLACE Thay thế văn bản cho TẤT CẢ lần xuất hiện
Đúng rồi. Nó quét toàn bộ văn bản của bạn với chuỗi bạn muốn tìm kiếm. Hãy để tôi chỉ cho bạn và giải thích vấn đề. Hãy xem ví dụ dưới đây:
SELECT REPLACE('know the unknown','know','seek');
-- OUTPUT: 'seek the unseekn. Surprise!
Cái biết chuỗi tồn tại hai lần, trong các từ know và bỏ biết N. Nếu bạn không cẩn thận, lỗi chính tả sẽ len lỏi vào dữ liệu của bạn. Thay vào đó, bạn có thể thêm không gian để chỉ tìm kiếm các từ hoàn chỉnh. Đây là mã đã sửa đổi:
SELECT REPLACE('know the unknown','know ','seek ');
-- OUTPUT: 'seek the unknown'.
Tốt hơn nhiều? Có thể có những tình huống khác, nhưng bạn hiểu được vấn đề.
2. SQL REPLACE có thể xóa văn bản
Bạn đã thử thay thế một từ không có gì trong trình soạn thảo văn bản chưa? Hoặc có thể bạn muốn loại bỏ các bản sao trong SQL? Nó cũng xảy ra trong SQL REPLACE. Đây là một ví dụ:
USE AdventureWorks
GO
SELECT
EmailAddress
,REPLACE(EmailAddress,'-','') AS NewEmailAddress
FROM person.EmailAddress;
Cột đầu tiên chứa tên miền địa chỉ email gốc. Cái thứ hai loại bỏ dấu gạch nối khỏi tên miền gốc. Xem ảnh chụp màn hình bên dưới:
Nếu bạn cần xóa một hoặc nhiều ký tự khỏi chuỗi gốc, hãy sử dụng chuỗi SQL trống để thay thế. Bạn cũng có thể xóa các bản ghi trùng lặp trong SQL theo cách này.
3. Đối chiếu ảnh hưởng đến kết quả của SQL REPLACE
Khi bạn cài đặt SQL Server, đối chiếu mặc định sẽ được sử dụng. Đổi lại, điều này sẽ được sử dụng bởi cơ sở dữ liệu và cột bảng của bạn. Hình 2 cho thấy một cái tôi sử dụng:
Trên máy tính xách tay của mình, tôi sử dụng SQL_Latin1_CP1_CI_AS . Đó là một đối chiếu không phân biệt chữ hoa chữ thường. (Xem thêm CI trong tên đối chiếu cho c ase i không nhạy cảm). Do đó, các từ Con chó , con chó , CHÓ và dOg sẽ được đối xử như nhau.
Hãy thử thực hiện:
DECLARE @string VARCHAR(200) = 'Cats are great pets
and so easy to take care of. They make good companions.
Having a cat around is good for children.';
SELECT REPLACE(@string,'cat','dog');
Và kết quả là:
Tính năng REPLACE đã tìm thấy từ Cat trong Cat s trong câu đầu tiên và từ cat trong câu cuối cùng. Sẽ không liên quan nếu các chữ cái viết hoa hoặc viết thường.
Tuy nhiên, nếu chúng ta buộc thay đổi đối chiếu thành đối chiếu phân biệt chữ hoa chữ thường trong REPLACE, điều gì sẽ xảy ra? Đây là mã sử dụng COLLATE trong REPLACE:
DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';
-- force a change to a case-sensitive collation. '_CS_' for case-sensitive
SELECT REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog');
Và đây là kết quả:
Bây giờ bạn thấy cách đối chiếu ảnh hưởng đến kết quả. Con mèo và con mèo bây giờ được đối xử khác nhau. Đoạn văn trở nên khó hiểu. Vì vậy, bài học là sử dụng đối chiếu một cách thận trọng.
4. Bạn có thể Nest SQL REPLACE
Bạn có thể thay thế các từ bạn đã thay thế bằng cách lồng hàm REPLACE. Đây là một ví dụ:
USE AdventureWorks
GO
SELECT
definition
,REPLACE(REPLACE(definition,'CREATE PROCEDURE','ALTER PROCEDURE'),'BusinessEntityID','BusinessEntityNo')
FROM sys.sql_modules a
INNER JOIN sys.objects b ON a.object_id = b.object_id
WHERE a.definition LIKE '%BusinessEntityID%'
AND b.type = 'P';
Ví dụ trên đã sử dụng REPLACE trong REPLACE. Đó là thay đổi TẠO THỦ TỤC đến THỦ TỤC THAY THẾ sau đó là BusinessEntityID tới BusinessEntityNo .
Truy vấn sẽ ảnh hưởng đến các thủ tục được lưu trữ đã sử dụng BusinessEntityID cột. Điều này hữu ích khi bạn muốn đổi tên một cột trong bảng và thay thế mã cơ sở dữ liệu bị ảnh hưởng. Các tham số thủ tục được lưu trữ cũng bị ảnh hưởng, nhưng bạn có thể chọn thay thế chúng để duy trì tính nhất quán của việc đặt tên.
Lưu ý rằng trước khi thực hiện các câu lệnh ALTER, bạn cần kiểm tra các thay đổi sẽ được áp dụng. Bạn không muốn làm mọi thứ rối tung lên phải không?
Trong khi đó, REPLACE làm tổ cũng có thể khắc phục sự cố mà chúng tôi gặp phải trước đó trên mèo và chó . Đây là cách khắc phục:
DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';
SELECT REPLACE(REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog') COLLATE SQL_Latin1_General_CP1_CS_AS,'Cat','Dog');
Kiểm tra kết quả mới:
Cũng lưu ý rằng vấn đề viết hoa trong Hình 3 cũng đã được khắc phục.
5. Sử dụng với UPDATE để lưu trữ nội dung được thay thế
Cho đến nay, chúng tôi chỉ sử dụng SQL REPLACE với một truy vấn SELECT. Điều này sẽ chỉ cho phép chúng tôi xem đầu ra của REPLACE. Để lưu trữ đầu ra của nó, bạn cũng cần phát hành CẬP NHẬT. Đây là một ví dụ:
USE AdventureWorks
GO
UPDATE Person.EmailAddress
SET EmailAddress= REPLACE(EmailAddress,'-','');
Đây là một ví dụ khác sử dụng MySQL liên quan đến blog_posts bảng trong WordPress. Xem cách bạn có thể thay thế URL riêng tư bằng URL công khai:
-- View the possible results
SELECT
guid
,REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net') AS NewGUID
FROM blog_posts
WHERE post_date > '2020-10-01';
-- Update the blog_posts table by replacing localhost with a fictitious URL
UPDATE blog_posts
set guid = REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net')
WHERE post_date > '2020-10-01';
Bộ kết quả cho câu lệnh đầu tiên ở trên có thể được nhìn thấy bên dưới bằng cách sử dụng dbForge Studio cho MySQL:
Kết luận
Càng xa càng tốt. Bạn đã thấy những gì REPLACE trong SQL có thể làm trong thực tế. Nó có thể đưa ra ý tưởng khi bạn cần thay đổi địa chỉ email và URL. nếu bạn đổi tên một cột trong bảng được sử dụng trong một thủ tục, dạng xem hoặc từ đồng nghĩa được lưu trữ.
Hãy tóm tắt lại:
- SQL REPLACE có thể thay thế văn bản cho TẤT CẢ các lần xuất hiện.
- Nó cũng có thể xóa một phần văn bản.
- Cài đặt đối chiếu có thể ảnh hưởng đến đầu ra của REPLACE.
- Bạn có thể lồng ghép việc sử dụng SQL REPLACE.
- Cuối cùng, sử dụng UPDATE để lưu trữ các văn bản được thay thế.
Nếu bạn thích bài đăng này, hãy chia sẻ nó trên phương tiện truyền thông xã hội yêu thích của bạn. Hãy cho chúng tôi biết suy nghĩ của bạn trong phần bình luận bên dưới.