วิธีเปลี่ยนตัวอักษรที่ตำแหน่งเฉพาะในสตริง MySQL
ใช้ CONCAT() ร่วมกับ SUBSTRING() เพื่อต่อสตริงใหม่โดยแทนที่ตัวอักษรตำแหน่งที่ต้องการ
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value varchar(200));
mysql> insert into DemoTable(Value) values('98764');
ข้อมูลต้นฉบับ: 98764
คิวรีเปลี่ยนตัวอักษรตำแหน่งที่ 4 (นับจาก 1) จาก 6 เป็น X:
mysql> select concat(substring(Value,1,3), 'X', substring(Value,5)) from DemoTable;
+-----------------------------------------------------+ | concat(substring(Value,1,3), 'X', substring(Value,5)) | +-----------------------------------------------------+ | 987X4 | +-----------------------------------------------------+
การทำงาน:
SUBSTRING(Value, 1, 3)→'987'(3 ตัวแรก)'X'→ ตัวอักษรใหม่SUBSTRING(Value, 5)→'4'(ตัวที่ 5 เป็นต้นไป)CONCAT(...)→ รวมเป็น'987X4'
การประยุกต์ใช้ทั่วไป (Function):
CREATE FUNCTION REPLACE_AT(str VARCHAR(255), pos INT, newChar CHAR(1)) RETURNS VARCHAR(255) DETERMINISTIC RETURN CONCAT(SUBSTRING(str, 1, pos-1), newChar, SUBSTRING(str, pos+1));
ทางเลือกอื่น: ใช้ INSERT(str, pos, len, newstr) - แทนที่ len ตัวอักษรตั้งแต่ pos ด้วย newstr | SELECT INSERT('98764', 4, 1, 'X') → 987X4