Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ลบอักขระพิเศษออกจากคอลัมน์ใน MySQL

ใช้ 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)