Hàm SUBSTRING_INDEX[] được sử dụng để phân tách dữ liệu chuỗi được truy vấn truy xuất dựa trên một dấu phân cách cụ thể. Cách sử dụng chức năng này trong truy vấn CHỌN được thảo luận trong hướng dẫn này
Cú pháp của SUBSTRING_INDEX[]
Hàm SUBSTRING_INDEX[] nhận ba đối số và trả về một giá trị chuỗi con. Cú pháp của hàm SUBSTRING_INDEX[] được cung cấp bên dưới
chuỗi SUBSTRING_INDEX[chuỗi, dấu phân cách, số đếm];
- Đối số đầu tiên là giá trị chuỗi sẽ được chia
- Đối số thứ hai là dấu phân cách sẽ được sử dụng để phân tách giá trị chuỗi
- Đối số thứ ba xác định số lần xuất hiện của dấu phân cách. Nó có thể tích cực hoặc tiêu cực. Nếu giá trị đối số thứ ba là dương, thì giá trị chuỗi con sẽ được trả về từ bên trái. Nếu giá trị đối số thứ ba là âm, giá trị chuỗi con sẽ được trả về từ bên phải
Tách Chuỗi Sử Dụng Hàm SUBSTRING_INDEX[]
Các cách sử dụng khác nhau của hàm SUBSTRING_INDEX[] đã được trình bày trong phần này của hướng dẫn này
ví dụ 1. Tách chuỗi dựa trên giá trị đếm dương
Phần hướng dẫn này trình bày bốn cách sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm dương và dấu phân cách khác nhau
Chạy câu lệnh CHỌN sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm dương, 1 và khoảng trắng làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint', chứa ba từ. Vì vậy, từ đầu tiên của chuỗi sẽ được in ở đầu ra
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', ' ', 1];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
Chạy câu lệnh SELECT sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm dương, 2 và ký tự, 'o' làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint' chứa ký tự, 'o' hai lần. Lần thứ hai 'o' xuất hiện trong từ thứ hai, 'to'. Vì vậy, đầu ra sẽ là 'Welcome t'
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', 'o', 2];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trên
Chạy câu lệnh CHỌN sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm dương là 1 và chuỗi 'đến' làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint' chứa chuỗi, 'đến' một lần. Vì vậy, đầu ra sẽ là 'Chào mừng'
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', 'to', 1];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
Chạy câu lệnh SELECT sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm dương 3 và chuỗi 'đến' làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint' chứa chuỗi, 'đến' chỉ một lần. Vì vậy, chuỗi chính sẽ được trả về trong đầu ra
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', 'to', 3];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
ví dụ 2. Tách chuỗi dựa trên giá trị đếm âm
Phần hướng dẫn này trình bày ba cách sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm âm và dấu phân cách khác nhau đã được hiển thị trong phần hướng dẫn này
Chạy câu lệnh SELECT sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm âm, -1 và khoảng trắng làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint', chứa ba từ. Vì vậy, từ cuối cùng của chuỗi sẽ được in ở đầu ra cho giá trị âm
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', ' ', -1];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
Chạy câu lệnh SELECT sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm âm -2 và ký tự 'e' làm dấu phân cách. Chuỗi chính, 'Chào mừng bạn đến với LinuxHint', chỉ chứa ký tự 'e' một lần. Vì vậy, đầu ra sẽ là 'lcome to LinuxHint'
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', 'e', -2];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
Chạy câu lệnh CHỌN sau sử dụng hàm SUBSTRING_INDEX[] với giá trị đếm âm, -2 và chuỗi, 'in' làm dấu phân cách. Chuỗi chính, ‘Welcome to LinuxHint’ chứa chuỗi, ‘in’ hai lần. Vì vậy, chuỗi con 'unHint' sẽ được trả về ở đầu ra
SELECT SUBSTRING_INDEX ['Chào mừng bạn đến với LinuxHint', 'in', -2];
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
ví dụ 3. Tách giá trị chuỗi của bảng
Bạn phải tạo một bảng có dữ liệu trong cơ sở dữ liệu MySQL để kiểm tra hàm SUBSTRING_INDEX[] cho dữ liệu bảng
Chạy truy vấn sau để tạo cơ sở dữ liệu có tên test_db
TẠO CƠ SỞ DỮ LIỆU test_db;
Chạy câu lệnh sau để sử dụng cơ sở dữ liệu test_db làm cơ sở dữ liệu hiện tại
SỬ DỤNG test_db;
Chạy truy vấn sau để tạo bảng khách hàng với bốn trường
TẠO BẢNG khách hàng [
id INT NOT NULL PRIMARY KEY,
name VARCHAR[30] NOT NULL,
email VARCHAR[50],
contact_no VARCHAR[15]];
Chạy truy vấn sau để chèn ba bản ghi vào bảng khách hàng
CHÈN VÀO `khách hàng` [`id`, `name`, `email`, `contact_no`] VALUES
['001', 'Mahmuda Ferdous', '[email protected]', '+8801928964534'],
['002', 'Zarin Chowdhury', '[email protected]', '+8801855342123'],
['003', 'Mahmudul Hasan', '[email protected]', '+8801728976587'];
Chạy lệnh sau để đọc tất cả các bản ghi của bảng khách hàng
CHỌN * TỪ khách hàng;
Trường tên chứa tên và họ. Trường contact_no chứa số điện thoại di động có mã quốc gia. Có thể đọc tên và số điện thoại di động không có mã quốc gia từ bảng bằng hàm SUBSTRING_INDEX[]. Trong truy vấn SELECT sau đây, tên sẽ được truy xuất bằng cách sử dụng dấu phân cách khoảng trắng và 1 làm giá trị đếm trong hàm SUBSTRING_INDEX[] và số điện thoại di động không có mã quốc gia sẽ được truy xuất bằng cách sử dụng mã quốc gia làm dấu phân cách và
CHỌN
id , SUBSTRING_INDEX [name,' ',1] AS `First Name`, email, SUBSTRING_INDEX[contact_no,'+88',-1] AS Phone
FROM customers;
Đầu ra sau sẽ xuất hiện sau khi thực hiện câu lệnh trước đó
Sự kết luận
Các cách sử dụng khác nhau của hàm SUBSTRING_INDEX[] bằng cách sử dụng các giá trị đối số khác nhau đã được thảo luận trong hướng dẫn này bằng cách sử dụng nhiều ví dụ. Tôi hy vọng các ví dụ trong hướng dẫn này sẽ giúp người dùng MySQL biết cách sử dụng hàm SUBSTRING_INDEX[] và áp dụng nó đúng cách trong truy vấn SELECT. Xem các bài viết khác về Linux Hint để biết thêm mẹo và hướng dẫn