ใช้ SUBSTR() หรือ SUBSTRING() ตัดตัวอักษร
ฟังก์ชัน SUBSTR(str, pos) คืนค่า Substring ตั้งแต่ตำแหน่ง pos ถึงท้ายสตริง (1-based index)
Syntax
UPDATE table_name
SET column_name = SUBSTR(column_name, 2);
ตัวอย่าง: ลบหลักแรกของเลข
CREATE TABLE DemoTable607 (Value VARCHAR(100));
INSERT INTO DemoTable607 VALUES
('83967364'), ('10939432'), ('932111');
ก่อน Update:
+----------+
| Value |
+----------+
| 83967364 |
| 10939432 |
| 932111 |
+----------+
Update:
UPDATE DemoTable607 SET Value = SUBSTR(Value, 2);
หลัง Update:
+---------+
| Value |
+---------+
| 3967364 |
| 0939432 |
| 32111 |
+---------+
SUBSTR Variants
| Syntax | ผลลัพธ์ | ตัวอย่าง |
|---|---|---|
| SUBSTR(str, pos) | ตัวอักษร pos ถึงท้าย | SUBSTR('abcde', 2) = 'bcde' |
| SUBSTR(str, pos, len) | ตัวอักษร pos ยาว len | SUBSTR('abcde', 2, 3) = 'bcd' |
| SUBSTR(str, -pos) | ตัวอักษร pos ตัวท้าย | SUBSTR('abcde', -2) = 'de' |
กรณีใช้งานจริง
- ลบ Prefix Code: 'TH-12345' → '12345' (ใช้ SUBSTR(col, 4) หรือ REPLACE)
- Masking: เลขบัตรเครดิต '1234567890123456' → '****3456' (ใช้ CONCAT + SUBSTR)
- Extract Year: '2024-01-15' → '2024' (ใช้ SUBSTR(col, 1, 4) หรือ YEAR())
⚠️ ข้อควรระวัง
- Data Type: SUBSTR คืนค่า STRING เสมอ ถ้าคอลัมน์เป็น INT จะ Implicit Cast กลับ (อาจ Error ถ้าไม่ใช่ตัวเลข)
- Leading Zero: '10939432' → '0939432' (เก็บ Leading Zero ได้เพราะ VARCHAR)
- NULL Handling: SUBSTR(NULL, 2) = NULL
- WHERE Clause: ควรมี WHERE ป้องกัน Update ทั้งตาราง
ตัวอย่างปลอดภัย
UPDATE DemoTable607
SET Value = SUBSTR(Value, 2)
WHERE Value IS NOT NULL
AND CHAR_LENGTH(Value) > 1;
ฟังก์ชันที่เกี่ยวข้อง
LEFT(str, len)- ตัวอักษรซ้าย len ตัวRIGHT(str, len)- ตัวอักษรขวา len ตัวMID(str, pos, len)- Alias ของ SUBSTRREPLACE(str, from, to)- แทนที่substring (เหมาะกว่าสำหรับ Pattern คงที่)