ใช้คำสั่ง UPDATE ... SET column = NULL WHERE column = 'value' เพื่อหาค่าเฉพาะ (รวมตัวอักษรพิเศษ) และตั้งค่าเป็น NULL
Syntax
UPDATE table_name SET column_name = NULL WHERE column_name = 'target_value';
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable1914 (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Code varchar(20)
-> ) AUTO_INCREMENT=1001; Query OK, 0 rows affected (0.00 sec)
mysql> insert into DemoTable1914(Code) values('John101'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1914(Code) values('234David'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1914(Code) values('100_Mike'); Query OK, 1 row affected (0.00 sec)
ข้อมูลทั้งหมด:
mysql> select * from DemoTable1914;
+------+----------+ | Id | Code | +------+----------+ | 1001 | John101 | | 1002 | 234David | | 1003 | 100_Mike | +------+----------+ 3 rows in set (0.00 sec)
2. หา Code = '100_Mike' และตั้งค่า NULL
mysql> update DemoTable1914 set Code = NULL where Code = '100_Mike'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
3. ตรวจสอบผลลัพธ์
mysql> select * from DemoTable1914;
+------+----------+ | Id | Code | +------+----------+ | 1001 | John101 | | 1002 | 234David | | 1003 | NULL | +------+----------+ 3 rows in set (0.00 sec)
ขยาย: หาด้วย Pattern (LIKE/REGEXP) แล้วตั้งค่า NULL
-- หา Code ที่มี Underscore UPDATE DemoTable1914 SET Code = NULL WHERE Code LIKE '%_%'; -- หา Code ที่มีตัวเลข UPDATE DemoTable1914 SET Code = NULL WHERE Code REGEXP '[0-9]'; -- หา Code เริ่มต้นด้วยตัวเลข UPDATE DemoTable1914 SET Code = NULL WHERE Code REGEXP '^[0-9]';
คำสั่งที่เกี่ยวข้อง
| คำสั่ง | ใช้เมื่อ |
|---|---|
| SET col = NULL | ล้างค่าเป็น NULL |
| SET col = '' | ล้างค่าเป็น Empty String |
| WHERE col IS NULL | หาแถวที่เป็น NULL |
| WHERE col = '' | หาแถวที่เป็น Empty String |
⚠️ หมายเหตุ: NULL และ '' (Empty String) ต่างกันใน SQL:
NULL= ไม่มีค่า (Unknown)''= มีค่าแต่เป็นสตริงว่างCOUNT(col)นับเฉพาะ NOT NULL,COUNT(*)นับทุกแถว
สรุป: ใช้ UPDATE ... SET column = NULL WHERE column = 'exact_value' เพื่อแทนที่ค่าเฉพาะ (รวม Special Char) ด้วย NULL สำหรับ Pattern Matching ใช้ LIKE หรือ REGEXP ใน WHERE