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

ดึง Substring 3 ตัวสุดท้ายของสตริงใน MySQL ด้วย SUBSTR

เมื่อต้องการดึงตัวอักษร 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)

ตัวอย่างตำแหน่งต่างๆ

คำสั่งJohnCarolRobertคำอธิบาย
SUBSTR(name, 1)JohnCarolRobertทั้งสตริง
SUBSTR(name, 2)ohnarolobertตัวที่ 2 ถึงจบ
SUBSTR(name, -1)nltตัวสุดท้าย
SUBSTR(name, -3)ohnrolert3 ตัวสุดท้าย
SUBSTR(name, 1, 2)JoCaRo2 ตัวแรก

ฟังก์ชันเทียบเท่า

  • 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)