×

Lấy chuỗi con với SUBSTR() trong MySQL

Trong quá trình làm việc với dữ liệu trong MySQL, chắc chắn bạn sẽ gặp tình huống cần lấy ra một phần của chuỗi ký tự. Để giải quyết vấn đề này, MySQL cung cấp một hàm rất hữu ích là SUBSTR(). Hàm này cho phép bạn trích xuất một chuỗi con từ một chuỗi lớn hơn, bắt đầu từ một vị trí nhất định và có độ dài nhất định.

Cú pháp của hàm

Cú pháp cơ bản của SUBSTR() như sau:

SUBSTR(str, pos, len)

Trong đó:

  • str là chuỗi đầu vào mà bạn muốn trích xuất chuỗi con từ đó.
  • pos là vị trí bắt đầu trích xuất trong chuỗi str. Chỉ mục này bắt đầu từ 1.
  • len (tùy chọn) là số lượng ký tự muốn trích xuất. Nếu không được chỉ định, hàm sẽ lấy tất cả các ký tự từ vị trí bắt đầu đến hết chuỗi.

Ví dụ cụ thể

Để hiểu rõ hơn về cách sử dụng SUBSTR(), hãy cùng xem qua một vài ví dụ cụ thể.

Ví dụ 1: Trích xuất từ vị trí đầu cắt định

SELECT SUBSTR('Chào mừng bạn đến với MySQL', 6, 5) AS ExtractedString;

Trong trường hợp này, kết quả sẽ là 'mừng' vì chúng ta bắt đầu từ vị trí thứ 6 và lấy 5 ký tự.

Ví dụ 2: Trích xuất từ vị trí cuối cùng mà không chỉ định độ dài

SELECT SUBSTR('Chào mừng bạn đến với MySQL', -5) AS ExtractedString;

Kết quả sẽ là 'MySQL' vì vị trí bắt đầu từ ký tự thứ 5 tính từ cuối chuỗi trở đi.

Vị trí âm trong pos

Nếu bạn sử dụng số âm cho vị trí bắt đầu pos, hàm sẽ đếm từ cuối chuỗi về đầu. Điều này rất hữu ích khi bạn muốn lấy phần cuối của một chuỗi mà không cần biết chính xác độ dài của nó.

Ví dụ 3: Sử dụng vị trí âm

SELECT SUBSTR('Chào mừng bạn đến với MySQL', -9, 7) AS ExtractedString;

Kết quả sẽ là 'đến với'-9 bắt đầu từ ký tự thứ 9 từ cuối và lấy 7 ký tự tiếp theo.

Lưu ý khi dùng SUBSTR()

  1. Tính từ 1: Vị trí bắt đầu tính từ 1, không phải từ 0. Điều này khác với nhiều ngôn ngữ lập trình khác có chỉ mục mảng bắt đầu từ 0.
  2. Phạm vi của pos: Nếu vị trí bắt đầu (pos) lớn hơn chiều dài của chuỗi, hàm sẽ trả về một chuỗi rỗng.
  3. Độ dài len âm: Nếu độ dài (len) là số âm, hàm sẽ trả về chuỗi rỗng.

Ứng dụng thực tiễn

Hàm SUBSTR() rất hữu ích trong nhiều trường hợp thực tế như:

  • Trích xuất mã quốc gia từ một số điện thoại
  • Lấy mã sản phẩm từ một chuỗi mã phức tạp
  • Lọc các đoạn văn bản dựa trên từ khóa

Ví dụ 4: Ứng dụng thực tế

SELECT SUBSTR(phone_number, 1, 3) AS CountryCode
FROM customers;

SQL trên sẽ lấy ra mã quốc gia trong số điện thoại từ cột phone_number của bảng customers.

Sử dụng hàm SUBSTR() giúp bạn linh hoạt hơn trong việc xử lý chuỗi ký tự trong MySQL. Chỉ với vài thao tác đơn giản, bạn có thể trích xuất những thông tin cần thiết từ một chuỗi dài phức tạp, tối ưu hóa việc lưu trữ và truy xuất dữ liệu.

Comments