Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL lấy chuỗi con (3 ký tự cuối) từ chuỗi?

Sử dụng SUBSTR() (alias của SUBSTRING()) với vị trí bắt đầu âm để lấy N ký tự cuối.

Tạo bảng

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstName VARCHAR(20)
    -> );

Chèn dữ liệu

mysql> INSERT INTO DemoTable(FirstName) VALUES('John'), ('Carol'), ('Robert'), ('Chris'), ('David');

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 2  | Carol     |
| 3  | Robert    |
| 4  | Chris     |
| 5  | David     |
+----+-----------+

Lấy 3 ký tự cuối

mysql> SELECT SUBSTR(FirstName, -3) FROM DemoTable;
+----------------------+
| SUBSTR(FirstName,-3) |
+----------------------+
| ohn                  |
| rol                  |
| ert                  |
| ris                  |
| vid                  |
+----------------------+

Giải thích SUBSTR với vị trí âm

  • SUBSTR(str, -N): Trả về N ký tự cuối của chuỗi
  • Tương đương: SUBSTR(str, LENGTH(str) - N + 1, N)
  • SUBSTR(str, pos) không có length → lấy từ pos đến hết chuỗi

Các hàm trích xuất chuỗi liên quan

HàmChức năngVí dụ
LEFT(str, n)n ký tự đầuLEFT('abcde', 2) → 'ab'
RIGHT(str, n)n ký tự cuốiRIGHT('abcde', 2) → 'de'
SUBSTRING(str, start, len)Trích từ start độ dài lenSUBSTRING('abcde', 2, 2) → 'bc'
SUBSTRING_INDEX(str, delim, count)Tách theo dấu phân cáchSUBSTRING_INDEX('a,b,c', ',', -1) → 'c'

Lưu ý

  • Với chuỗi multi-byte (UTF-8), LENGTH tính byte, CHAR_LENGTH tính ký tự. Dùng SUBSTR(str, -3) an toàn vì MySQL xử lý ký tự đúng
  • Chuỗi ngắn hơn 3 ký tự: trả về toàn bộ chuỗi (không lỗi)