Cách thay thế giá trị trong MySQL

Cơ sở dữ liệu của chúng tôi có một bảng tên là

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
8 với dữ liệu trong các cột
SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
9,
CREATE TABLE employee(id INT AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(100), 
lastname VARCHAR(100), city VARCHAR(100), designation VARCHAR(100));
0 và
CREATE TABLE employee(id INT AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(100), 
lastname VARCHAR(100), city VARCHAR(100), designation VARCHAR(100));
1

idnamepart_number1Harley Davidson x1245-AC2-252Honda CB750-x012-GK8-A83Suzuki Hayabusa X798-25-28

Chúng tôi muốn thay đổi số bộ phận của xe máy bằng cách thay thế tất cả các ký tự gạch nối bằng dấu gạch chéo về phía trước

Giải pháp 1

SELECT name,
  REPLACE( part_number, '-', '/' ) as new_part_number
FROM motorbike_sale;

Truy vấn này trả về danh sách tên xe máy và số bộ phận mới. Lưu ý các dấu gạch chéo về phía trước đã thay thế các dấu gạch nối trong số bộ phận

namenew_ part_numberHarley Davidson x1245/AC2/25Honda CB750-x012/GK8/A8Suzuki Hayabusa X798/25/28

Thảo luận

Sử dụng hàm REPLACE() của MySQL để thay thế một chuỗi con (i. e. từ, ký tự, v.v. ) với một chuỗi con khác và trả về chuỗi đã thay đổi. Hàm này có ba đối số

  • Chuỗi để thay đổi. (Trong ví dụ của chúng tôi, đó là cột
    CREATE TABLE employee(id INT AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(100), 
    lastname VARCHAR(100), city VARCHAR(100), designation VARCHAR(100));
    
    1. )
  • Chuỗi con để thay thế (i. e. nhân vật '-')
  • Chuỗi con để chèn (i. e. nhân vật '/')

Lưu ý rằng hàm này thay thế tất cả các lần xuất hiện của chuỗi con trong chuỗi hoặc cột đã cho. Trong ví dụ của chúng tôi, mỗi part_number chứa ba ký tự gạch nối, mỗi ký tự được thay thế bằng dấu gạch chéo

Trong ví dụ tiếp theo, chúng tôi sẽ thay thế tất cả các phiên bản của 'x' trong tên xe máy bằng '10'

Giải pháp 2

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;

Truy vấn này sử dụng mệnh đề WHERE để lọc các bản ghi cho các hàng có giá trị id từ 2 trở lên

Để ý tên xe máy Honda đổi từ 'x' thành '10' nhưng tên xe máy Suzuki không đổi. Tại sao không? . Do đó, 'x' không giống với 'X'. Trong ví dụ này, 'x' đã được thay thế bằng '10', nhưng 'X' không thay đổi

Tìm hiểu về hàm REPLACE() của MySQL và Câu lệnh REPLACE INTO của MySQL với các ví dụ thông qua hướng dẫn này

MySQL cung cấp 2 biến thể của REPLACE, một dưới dạng Hàm chuỗi REPLACE và một biến thể khác dưới dạng Câu lệnh REPLACE, giống như sử dụng Câu lệnh INSERT

Như tên gợi ý, hàm REPLACE được sử dụng để thay thế biểu thức hoặc chuỗi phù hợp bằng Chuỗi hoặc giá trị thay thế được cung cấp làm đối số cho hàm

=> Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL

Cách thay thế giá trị trong MySQL

Bạn sẽ học được gì

THAY THẾ MYSQL

Hàm REPLACE thuộc danh mục Hàm chuỗi trong MySQL

Có một biến thể khác có sẵn trong MySQL, đó là Câu lệnh REPLACE INTO. Không giống như thay thế một chuỗi cụ thể, câu lệnh REPLACE về cơ bản thay thế toàn bộ hàng trong bảng MySQL. Chúng ta sẽ xem các ví dụ cho cả hai biến thể

Dữ liệu thử nghiệm

Hãy tạo một bảng mẫu và thêm một số dữ liệu mẫu để hiểu rõ hơn về các khái niệm

CREATE TABLE employee(id INT AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(100), 
lastname VARCHAR(100), city VARCHAR(100), designation VARCHAR(100));
INSERT INTO employee VALUES
(1, 'Alex', 'Smith', 'Denver', 'Software Developer'), 
(2, 'Adam', 'Johnson', 'Vancouver', 'Marketing Manager'), 
(3, 'Peter', 'Fennel', 'Chicago', 'Sales Manager'),
(4, 'Ajay', 'Sharma', 'Mumbai', 'Software Developer'),
(5, 'Neha', 'Gupta', 'Delhi', 'Human Resources')

cú pháp

REPLACE(string-input, matching-string, replacement-string)

Hãy cố gắng hiểu các thành phần khác nhau ở đây

  • đầu vào chuỗi. Đây là Đầu vào mà chúng tôi đang cung cấp cho hàm REPLACE. Đây có thể là giá trị Chuỗi thực tế của cột chứa giá trị Chuỗi
  • khớp chuỗi. Điều này biểu thị ký tự hoặc Chuỗi cần khớp với đầu vào Chuỗi
  • chuỗi thay thế. Đây là Chuỗi sẽ được thay thế theo từng chuỗi phù hợp

Ghi chú. Điều quan trọng là phải hiểu hàm REPLACE thực hiện khớp PHÂN BIỆT TRƯỜNG HỢP

THAY THẾ Ví dụ trong MySQL

#1) Thay thế một ký tự trong một Chuỗi đã cho

Ở đây, chúng tôi đang thay thế các lần xuất hiện của chữ cái 'H' bằng 'HH' và đặt bí danh cho cột mới bằng văn bản được thay thế là chuỗi thay thế

SELECT REPLACE('HELLO', 'H', 'HH') as replaced_string;

đầu ra

đã thay thế_stringHHELLO

#2) Thay thế Chuỗi bằng Đầu vào đã cho

Ở đây chúng tôi đang thay thế chuỗi 'abt' bằng 'about'

SELECT REPLACE('abt the product', 'abt', 'about') as replaced_string;

đầu ra.  

replace_stringgiới thiệu về sản phẩm

#3) Cập nhật bảng với câu lệnh REPLACE của MySQL

Bây giờ chúng ta hãy xem một ví dụ mà chúng ta muốn cập nhật một cột trong bảng bằng cách sử dụng hàm REPLACE

Xét dữ liệu mẫu cho bảng employee (tham khảo phần Test-Data của bài viết). Giả sử chúng tôi muốn cập nhật chỉ định và thay đổi từ `Manager` thành `Mgr` cho tất cả các hàng

Chúng ta có thể dễ dàng đạt được điều này bằng cách sử dụng câu lệnh REPLACE

UPDATE employee
SET designation = REPLACE(designation,'Manager','Mgr')

Thực thi câu lệnh SELECT để xem đầu ra

________số 8

đầu ra

idfirstnamelastnamecitydesignation1AlexSmithOhioSoftware Developer2AdamJohnsonVancouverMarketing Mgr3PeterFennelChicagoSales Mgr4AjaySharmaMumbaiSoftware Developer5NehaGuptaDelhiNhân sự

Chúng ta có thể thấy trong bảng đầu ra ở trên, tất cả các chỉ định có từ ‘Quản lý’ đã được thay đổi thành ‘Mgr’

Các câu lệnh CẬP NHẬT với REPLACE rất hữu ích khi có thể thực hiện cập nhật hàng loạt đối với một giá trị cột mà không cần thay thế toàn bộ nội dung cột

Ví dụ. Giả sử có một bảng chứa mô tả sản phẩm và nó có rất nhiều lỗi chính tả, ví dụ: about được đánh vần là about, v.v. Sau đó, bằng cách sử dụng REPLACE, điều này có thể dễ dàng đạt được trên toàn bộ bảng

Câu lệnh THAY THẾ MySQL

Lệnh REPLACE hoạt động tương tự như INSERT, điểm khác biệt duy nhất là đối với hàng phù hợp, dữ liệu cho hàng hiện có sẽ được thay thế và nếu không có hàng hiện có (so với khóa chính/khóa duy nhất) thì một hàng mới sẽ được chèn

cú pháp

REPLACE INTO {table_name} 
[colName1, colName2 ...] 
VALUES (value_list)

Hãy hiểu cú pháp

  • Ở đây {table_name} đại diện cho bảng mà chúng tôi muốn THAY THẾ một hàng hiện có (hoặc thêm một hàng mới)
  • Danh sách cột tùy chọn cho dữ liệu được chèn. Tùy chọn này thường được sử dụng khi bạn chỉ xác định giá trị cho các trường KHÔNG NULL hoặc thay đổi thứ tự của các cột
  • Value_list đại diện cho các giá trị cho các cột riêng lẻ trong bảng

REPLACE Chế độ tuyên bố

Nó có thể hoạt động ở 2 chế độ

  1. Xóa và Chèn. Khi một hàng phù hợp được tìm thấy, hàng phù hợp đầu tiên sẽ bị xóa và sau đó dữ liệu mới sẽ được chèn vào vị trí của hàng phù hợp
  2. Chèn. Điều này xảy ra khi không tìm thấy hàng phù hợp và một hàng mới được chèn vào bảng

Hãy thử tìm hiểu cả hai chế độ trên thông qua một ví dụ

#1) Chế độ Xóa và Chèn

Đối với dữ liệu mẫu mà chúng ta đã chèn ở trên, giả sử chúng ta muốn thay đổi giá trị cho employee#1 như bên dưới

  • Chỉ định cho Kiến trúc sư phần mềm
  • Thành phố tới Ohio

Thực thi câu lệnh SELECT trước khi chạy câu lệnh REPLACE như bên dưới

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
0

đầu ra

idfirstnamelastnamecitydesignation1AlexSmithDenverNhà phát triển phần mềm

Bây giờ, chúng ta hãy thực hiện câu lệnh REPLACE

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
1

Bạn sẽ nhận thấy rằng đầu ra câu lệnh REPLACE trả về – 2 hàng bị ảnh hưởng

Cách thay thế giá trị trong MySQL

Chạy câu lệnh SELECT cho employee_id-1

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
0

đầu ra

idfirstnamelastnamecitydesignation1AlexSmithOhioSoftware Architect

#2) Chế độ Chèn

Trong trường hợp này, hàng được thay thế không khớp với các hàng hiện có và do đó Được chèn làm bản ghi mới

Hãy thử THAY THẾ một hàng bằng id nhân viên – 6.
Bây giờ, vì không có hàng nào có ID đó (và id là KHÓA CHÍNH), nên việc thực thi lệnh dẫn đến một hàng mới được chèn vào.

INSERT INTO employee VALUES
(1, 'Alex', 'Smith', 'Denver', 'Software Developer'), 
(2, 'Adam', 'Johnson', 'Vancouver', 'Marketing Manager'), 
(3, 'Peter', 'Fennel', 'Chicago', 'Sales Manager'),
(4, 'Ajay', 'Sharma', 'Mumbai', 'Software Developer'),
(5, 'Neha', 'Gupta', 'Delhi', 'Human Resources')
1

Đầu ra của lệnh REPLACE sẽ trả về – 1 hàng bị ảnh hưởng, cho biết nó vừa thực hiện một INSERT

Cách thay thế giá trị trong MySQL

Chạy lệnh SELECT để truy vấn dữ liệu trong bảng

INSERT INTO employee VALUES
(1, 'Alex', 'Smith', 'Denver', 'Software Developer'), 
(2, 'Adam', 'Johnson', 'Vancouver', 'Marketing Manager'), 
(3, 'Peter', 'Fennel', 'Chicago', 'Sales Manager'),
(4, 'Ajay', 'Sharma', 'Mumbai', 'Software Developer'),
(5, 'Neha', 'Gupta', 'Delhi', 'Human Resources')
2

đầu ra

idfirstnamelastnamecitydesignation1AlexSmithOhioKiến trúc sư phần mềm2AdamJohnsonVancouverGiám đốc tiếp thị3PeterFennelChicagoQuản lý bán hàng4AjaySharmaMumbaiNhà phát triển phần mềm5NehaGuptaDelhiNhân sự6MartinKlarkNew YorkNgười kiểm tra phần mềm

Mẹo/Ghi chú quan trọng

  • Câu lệnh REPLACE chỉ nên được sử dụng với các bảng có khái niệm về khóa CHÍNH hoặc DUY NHẤT vì đó là cơ chế duy nhất mà câu lệnh sử dụng để tìm hiểu xem có một hàng hiện tại có cùng khóa chính hay không.
    Nếu không có khóa Duy nhất nào được xác định cho một bảng, thì tất cả các câu lệnh REPLACE sẽ kết thúc bằng việc chèn các bản ghi mới vào bảng.
  • Để sử dụng MySQL REPLACE, bạn phải có cả hai đặc quyền INSERT và DELETE trên bảng nơi lệnh đang được thực thi
  • Đầu ra câu lệnh REPLACE không trả về hàng nào bị ảnh hưởng. Nếu là 2 thì có nghĩa là nó đã xóa hàng gốc và thay thế nội dung mới. Nếu nó chỉ là 1, thì điều đó có nghĩa là nó đã được CHÈN, vì không tìm thấy bản ghi phù hợp nào

Các câu hỏi thường gặp

Q #1) Sự khác biệt giữa hàm REPLACE và câu lệnh REPLACE trong MySQL là gì?

Câu trả lời. MySQL cung cấp 2 biến thể của MySQL REPLACE

  • Câu lệnh REPLACE được sử dụng để THAY THẾ một hàng hiện có trong bảng (dựa trên KHÓA CHÍNH được xác định cho bảng)
  • REPLACE() Hàm chuỗi, thay thế một ký tự hoặc từ đã cho trong giá trị cột dựa trên Chuỗi đã cho

Q #2) Làm cách nào để thay thế một hàng trong MySQL?

Câu trả lời. Lệnh REPLACE INTO có thể được sử dụng để thay thế toàn bộ hàng trong MySQL. Hàng được khớp với KHÓA CHÍNH của bảng và nếu khớp khóa thành công thì hàng đó sẽ được thay thế

Ví dụ

SELECT id,
  REPLACE( name, 'x', '10' ) as new_name,
  part_number
FROM motorbike_sale
WHERE id>1;
1

Lệnh trên sẽ thay thế giá trị bằng id-1 trong bảng nhân viên nếu ID là khóa chính và đã tồn tại một hàng có ID-1

Q #3) Làm thế nào để bạn thay thế một từ trong MySQL?

Trả lời. Sử dụng hàm REPLACE() của MySQL, chúng ta có thể thay thế các ký tự riêng lẻ cũng như toàn bộ từ.
Hãy xem một số ví dụ dưới đây.

thay thế ký tự

INSERT INTO employee VALUES
(1, 'Alex', 'Smith', 'Denver', 'Software Developer'), 
(2, 'Adam', 'Johnson', 'Vancouver', 'Marketing Manager'), 
(3, 'Peter', 'Fennel', 'Chicago', 'Sales Manager'),
(4, 'Ajay', 'Sharma', 'Mumbai', 'Software Developer'),
(5, 'Neha', 'Gupta', 'Delhi', 'Human Resources')
4

đầu ra

đã thay thế_stringTEEst

thay thế từ

INSERT INTO employee VALUES
(1, 'Alex', 'Smith', 'Denver', 'Software Developer'), 
(2, 'Adam', 'Johnson', 'Vancouver', 'Marketing Manager'), 
(3, 'Peter', 'Fennel', 'Chicago', 'Sales Manager'),
(4, 'Ajay', 'Sharma', 'Mumbai', 'Software Developer'),
(5, 'Neha', 'Gupta', 'Delhi', 'Human Resources')
5

đầu ra

replace_stringXin Chào Bạn

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về cách sử dụng hàm REPLACE() của MySQL và Câu lệnh REPLACE INTO của MySQL. Cả hai biến thể đều rất hữu ích để thực hiện cập nhật hàng loạt hoặc thay thế chuỗi được nhắm mục tiêu trong một cột hoặc trường nhất định

Hàm REPLACE() là một hàm Chuỗi và có thể được sử dụng để thay thế các từ hoặc ký tự trong một cột nhất định, trong khi câu lệnh REPLACE tương tự như câu lệnh INSERT và có thể được sử dụng để XÁC NHẬN hoặc THAY THẾ toàn bộ hàng trong bảng MySQL

Làm cách nào để thay đổi giá trị trong MySQL?

Mệnh đề SET được sử dụng để thay đổi giá trị của cột được chỉ định. Chúng tôi có thể cập nhật một hoặc nhiều cột cùng một lúc. .
CẬP NHẬT tên_bảng
SET cột_name1 = new-value1,
column_name2=new-value2,
[Mệnh đề WHERE]

Làm cách nào để sử dụng thay thế trong MySQL?

REPLACE [INTO] table_name(column_list) VALUES(value_list); .
TẠO BẢNG Người (
ID int AUTO_INCREMENT PRIMARY KEY,
Tên varchar(45) MẶC ĐỊNH NULL,
Email varchar(45) MẶC ĐỊNH NULL DUY NHẤT,
Thành phố varchar(25) DEFAULT NULL

Làm cách nào để thay thế văn bản trong truy vấn MySQL?

Sử dụng hàm REPLACE() của MySQL để thay thế một chuỗi con (i. e. từ, ký tự, v.v. ) với một chuỗi con khác và trả về chuỗi đã thay đổi. .
Chuỗi để thay đổi. .
Chuỗi con để thay thế (i. e. nhân vật '-')
Chuỗi con để chèn (i. e. nhân vật '/')

Làm cách nào để thay đổi giá trị trong cột MySQL?

Lệnh MySQL UPDATE có thể được sử dụng để cập nhật nhiều cột bằng cách chỉ định danh sách cột_name = new_value được phân tách bằng dấu phẩy . Trong đó column_name là tên của cột sẽ được cập nhật và new_value là giá trị mới mà cột sẽ được cập nhật.