เมื่อต้องการดึงตัวอักษร 3 ตัวสุดท้าย (Rightmost 3 Characters) จากสตริง ให้ใช้ SUBSTR() หรือ SUBSTRING() กำหนดตำแหน่งเริ่มต้นเป็นลบ (-3)
สร้างตารางและข้อมูล
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(20)
);
mysql> insert into DemoTable(FirstName) values('John'),('Carol'),('Robert'),('Chris'),('David');
ข้อมูลในตาราง
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | Carol | | 3 | Robert | | 4 | Chris | | 5 | David | +----+-----------+
คำสั่งดึง 3 ตัวสุดท้าย
mysql> select substr(FirstName, -3) from DemoTable;
ผลลัพธ์
+----------------------+ | substr(FirstName,-3) | +----------------------+ | ohn | | rol | | ert | | ris | | vid | +----------------------+
SUBSTR / SUBSTRING Syntax
SUBSTR(str, pos) -- ตั้งแต่ pos ถึงจบ
SUBSTR(str, pos, len) -- ตั้งแต่ pos ความยาว len
SUBSTR(str, -N) -- N ตัวสุดท้าย (Negative Position)
ตัวอย่างตำแหน่งต่างๆ
| คำสั่ง | John | Carol | Robert | คำอธิบาย |
|---|---|---|---|---|
| SUBSTR(name, 1) | John | Carol | Robert | ทั้งสตริง |
| SUBSTR(name, 2) | ohn | arol | obert | ตัวที่ 2 ถึงจบ |
| SUBSTR(name, -1) | n | l | t | ตัวสุดท้าย |
| SUBSTR(name, -3) | ohn | rol | ert | 3 ตัวสุดท้าย |
| SUBSTR(name, 1, 2) | Jo | Ca | Ro | 2 ตัวแรก |
ฟังก์ชันเทียบเท่า
RIGHT(str, 3)- อ่านง่ายกว่า สำหรับ N ตัวสุดท้าย (MySQL Extension)LEFT(str, 3)- 3 ตัวแรกSUBSTRING_INDEX(str, delim, -1)- ส่วนหลัง Delimiter ตัวสุดท้าย
คำเตือน
- ความยาวน้อยกว่า 3 → คืนสตริงทั้งหมด (ไม่ Error)
- NULL Input → คืน NULL
- Multi-byte Characters (UTF-8) - SUBSTR นับ Byte ไม่ใช่ Character → ใช้
SUBSTR(name, -3)อาจผิดกับภาษาไทย - MySQL 8.0+ ใช้
SUBSTRING(str FROM -3 FOR 3)(Standard SQL Syntax)