Để 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)
);