Computer >> Máy Tính >  >> Lập trình >> MySQL

Thực hiện tìm kiếm / thay thế chỉ cho lần xuất hiện đầu tiên của một ký tự trong các bản ghi bảng MySQL?

Bạn có thể đạt được điều này với sự trợ giúp của hàm CONCAT () cùng với hàm REPLACE (). Để tìm những lần xuất hiện đầu tiên, bạn cần sử dụng hàm INSTR ().

Cú pháp như sau -

UPDATE yourTableName
SET UserPost = CONCAT(REPLACE(LEFT(yourColumnName, INSTR(yourColumnName, 'k')), 'k', 'i'),
SUBSTRING(yourColumnName, INSTR(yourColumnName, 'k') + 1));

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table UserInformation
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserName varchar(10),
   -> UserPost text
   -> );
Query OK, 0 rows affected (2.05 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -

mysql> insert into UserInformation(UserName,UserPost) values('Larry','Thks is a MySQL query');
Query OK, 1 row affected (0.16 sec)
mysql> insert into UserInformation(UserName,UserPost) values('Mike','Thks is not a java program');
Query OK, 1 row affected (0.31 sec)
mysql> insert into UserInformation(UserName,UserPost) values('Sam','Thks is a SQL syntax');
Query OK, 1 row affected (0.18 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -

mysql> select *from UserInformation;

Sau đây là kết quả -

+--------+----------+----------------------------+
| UserId | UserName | UserPost                   |
+--------+----------+----------------------------+
|      1 | Larry    | Thks is a MySQL query      |
|      2 | Mike     | Thks is not a java program |
|      3 | Sam      | Thks is a SQL syntax       |
+--------+----------+----------------------------+
3 rows in set (0.00 sec)

Đây là truy vấn để tìm kiếm / thay thế nhưng chỉ lần đầu tiên một giá trị xuất hiện trong một bản ghi. Ở đây, lần xuất hiện đầu tiên của ‘k’ được thay thế bằng ‘i’ -

mysql> update UserInformation
   -> set UserPost=CONCAT(REPLACE(LEFT(UserPost, INSTR(UserPost, 'k')), 'k', 'i'),
   -> SUBSTRING(UserPost, INSTR(UserPost, 'k') + 1));
Query OK, 3 rows affected (0.16 sec)
Rows matched: 3 Changed: 3 Warnings: 0

Hiển thị tất cả các bản ghi từ bảng một lần nữa. Truy vấn như sau -

mysql> select *from UserInformation;

Sau đây là kết quả hiển thị lần xuất hiện đầu tiên của ‘k’ được thay thế bằng ‘I’ -

+--------+----------+----------------------------+
| UserId | UserName | UserPost                   |
+--------+----------+----------------------------+
|      1 | Larry    | This is a MySQL query      |
|      2 | Mike     | This is not a java program |
|      3 | Sam      | This is a SQL syntax       |
+--------+----------+----------------------------+
3 rows in set (0.00 sec)