Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay thế lần đầu tiên ký tự với biến session trong MySQL

Để tìm và thay thế chỉ lần xuất hiện đầu tiên của ký tự trong chuỗi sử dụng biến session, kết hợp CONCAT(), REPLACE(), LEFT(), SUBSTRING(), INSTR().

Cú pháp với biến session

SET @bien = 'chuoi_goc';

SELECT @bien AS ChuoiGoc,
       CONCAT(REPLACE(LEFT(@bien, INSTR(@bien, 'ky_tu')), 'ky_tu', 'ky_tu_moi'),
              SUBSTRING(@bien, INSTR(@bien, 'ky_tu') + 1)) AS KetQua;

Ví dụ minh họa

Thiết lập biến session:

mysql> SET @Sentence = 'Thks ks is a my string';
Query OK, 0 rows affected (0.00 sec)

Thay 'k' đầu tiên thành 'i':

mysql> SELECT @Sentence AS NewString,
    -> CONCAT(REPLACE(LEFT(@Sentence, INSTR(@Sentence, 'k')), 'k', 'i'),
    ->        SUBSTRING(@Sentence, INSTR(@Sentence, 'k') + 1)) AS ChangeOnlyOneTime;

Kết quả:

+------------------------+------------------------+
| NewString              | ChangeOnlyOneTime      |
+------------------------+------------------------+
| Thks ks is a my string | This ks is a my string |
+------------------------+------------------------+

Chỉ 'k' đầu tiên trong "Thks" được thay thành 'i' → "This". Các 'k' sau đó giữ nguyên.

Áp dụng cho cột bảng

Tương tự bài trước, thay @Sentence bằng ten_cot trong câu UPDATE:

UPDATE ten_bang 
SET ten_cot = CONCAT(
    REPLACE(LEFT(ten_cot, INSTR(ten_cot, 'k')), 'k', 'i'),
    SUBSTRING(ten_cot, INSTR(ten_cot, 'k') + 1)
);