ใช้ REPLACE(column, 'special_char', '') เพื่อลบอักขระพิเศษที่ทราบชัดเจน
ตัวอย่าง: ลบ # ออกจากรหัสนักเรียน
1. สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable (StudentId VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('STU#123'), ('STU#567'), ('STU#98494');
2. ลบ # ทั้งหมด
mysql> UPDATE DemoTable SET StudentId = REPLACE(StudentId, '#', '');
ผลลัพธ์
+-----------+ | StudentId | +-----------+ | STU123 | | STU567 | | STU98494 | +-----------+
ลบหลายอักขระพิเศษพร้อมกัน
UPDATE DemoTable SET StudentId = REPLACE(REPLACE(REPLACE(StudentId, '#', ''), '@', ''), '!', '');
ลบอักขระที่ "ไม่ใช่" อักษร/ตัวเลข (เก็บแค่ Alphanumeric)
MySQL ไม่มี REGEXP_REPLACE built-in (MariaDB/MySQL 8.0+ with plugin มี) วิธีทำ:
1. สร้าง Function วนลูป (Slow)
CREATE FUNCTION strip_non_alphanum(str TEXT) RETURNS TEXT
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE result TEXT DEFAULT '';
DECLARE c CHAR(1);
WHILE i <= CHAR_LENGTH(str) DO
SET c = SUBSTRING(str, i, 1);
IF c REGEXP '[A-Za-z0-9]' THEN SET result = CONCAT(result, c); END IF;
SET i = i + 1;
END WHILE;
RETURN result;
END
2. แนะนำ: ทำที่ Application Layer (PHP, Python, Node.js)
-- Python: re.sub(r'[^A-Za-z0-9]', '', text)
-- PHP: preg_replace('/[^A-Za-z0-9]/', '', $text)