Hàm MySQL SUBSTRING_INDEX trả về chuỗi con của chuỗi trước số lần xuất hiện của dấu phân cách
cú pháp
Cú pháp của hàm SUBSTRING_INDEX trong MySQL là
SUBSTRING_INDEX[ string, delimiter, number ]
Tham số hoặc Đối số
stringChuỗi nguồn. delimiterDấu phân cách để tìm kiếm trong chuỗi. number Số lần tìm kiếm dấu phân cáchGhi chú
- Nếu số là một giá trị dương, thì mọi thứ từ bên trái của dấu phân cách được nhắm mục tiêu sẽ được hàm SUBSTRING_INDEX trả về
- Nếu số là một giá trị âm, mọi thứ từ bên phải của dấu phân cách được nhắm mục tiêu sẽ được hàm SUBSTRING_INDEX trả về
- Xem thêm hàm SUBSTRING
Áp dụng đối với
Hàm SUBSTRING_INDEX có thể được sử dụng trong các phiên bản sau của MySQL
- mysql 5. 7, MySQL5. 6, MySQL5. 5, MySQL5. 1, MySQL5. 0, MySQL4. 1, MySQL4. 0, Mysql 3. 23
Ví dụ
Hãy xem một số ví dụ về hàm SUBSTRING_INDEX của MySQL và khám phá cách sử dụng hàm SUBSTRING_INDEX trong MySQL
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về hàm MySQL SUBSTRING_INDEX[]
. SUBSTRING_INDEX[]
là một hàm chuỗi được sử dụng để trả về chuỗi con của một chuỗi trước một số lần xuất hiện cụ thể của một dấu phân cách đã cho
Chẳng hạn, bạn có giá trị chuỗi sau – “192. 168. 1. 10”
Bây giờ nếu bạn chỉ định dấu phân cách là ‘. ’ và số lần xuất hiện của nó và 2 thì hàm SUBSTRING_INDEX[]
sẽ trả về “192. 168” là kết quả của chúng tôi
Vì vậy, chúng tôi đang trích xuất chuỗi con từ chuỗi cho đến lần xuất hiện thứ hai của '. ’ dấu phân cách. SUBSTRING_INDEX[]
thường được sử dụng với câu lệnh
0.Code language: SQL [Structured Query Language] [sql]
SELECT SUBSTRING_INDEX[‘support@helpdesk.com’, ‘@’, 1] AS Result; SELECT SUBSTRING_INDEX[‘support@helpdesk.com’, ‘@’, 2] AS Result; SELECT SUBSTRING_INDEX[‘www.yahoo.co.in’, ‘.’, 3] AS Result;
Cú pháp của MySQL SUBSTRING_INDEX[]
Code language: SQL [Structured Query Language] [sql]
SUBSTRING_INDEX[string, delimiter, number];
Ở đâu
- 'chuỗi' là chuỗi mà bạn muốn trích xuất chuỗi con,
- 'dấu phân cách' là dấu phân cách để tìm kiếm và,
- 'số' là số lần xuất hiện của dấu phân cách
Ghi chú
- Tất cả các thông số trên đều là thông số bắt buộc
- Tham số 'số' có thể có các số nguyên dương và âm làm giá trị. Nếu giá trị là một số nguyên dương, thì số lần xuất hiện của dấu phân cách được tìm kiếm từ phía bên trái. Nếu giá trị là một số nguyên âm, thì số lần xuất hiện của dấu phân cách được tìm kiếm từ phía bên phải
Ví dụ về MySQL SUBSTRING_INDEX[]
Chúng ta hãy xem xét một số truy vấn cơ bản thể hiện chức năng MySQL SUBSTRING_INDEX[]
. Chúng tôi sẽ sử dụng bí danh trong các truy vấn để làm cho đầu ra của chúng tôi có thể đọc được. Hãy xem xét các truy vấn dưới đây
Code language: SQL [Structured Query Language] [sql]
SELECT SUBSTRING_INDEX[‘support@helpdesk.com’, ‘@’, 1] AS Result; SELECT SUBSTRING_INDEX[‘support@helpdesk.com’, ‘@’, 2] AS Result; SELECT SUBSTRING_INDEX[‘www.yahoo.co.in’, ‘.’, 3] AS Result;
- Trong truy vấn đầu tiên, chúng tôi muốn chuỗi con xuất hiện lần đầu tiên của dấu phân cách '@'
- Trong truy vấn thứ hai, chúng tôi muốn chuỗi con xuất hiện lần thứ hai của dấu phân cách '@'
- Và, trong truy vấn thứ ba, chúng tôi muốn chuỗi con tồn tại cho đến lần xuất hiện thứ ba của dấu phân cách ‘. ’
Đầu ra như sau,
MySQL SUBSTRING_INDEX[] Với các giá trị âm cho số dấu phân cách
Như tôi đã đề cập trước đó khi thảo luận về cú pháp, chúng ta có thể sử dụng số nguyên âm làm giá trị trong tham số 'số'. Một số nguyên âm biểu thị số lần xuất hiện của dấu phân cách từ phía bên phải. Chúng ta hãy xem một vài ví dụ về điều này
Hãy xem xét các truy vấn dưới đây
Code language: SQL [Structured Query Language] [sql]
SELECT SUBSTRING_INDEX['www.yahoo.co.in', '.', -1] AS Result; SELECT SUBSTRING_INDEX['www.yahoo.co.in', '.', -3] AS Result;
Và đầu ra là,
Làm việc với dữ liệu bảng
Chúng ta hãy xem xét một vài ví dụ về bảng. Xem xét bảng Nhân viên bên dưới
Ví dụ đơn giản với dữ liệu bảng
Làm cách nào để tìm năm tham gia của mọi nhân viên từ cột Date_Joined bằng MySQL SUBSTRING_INDEX[]
?
Code language: SQL [Structured Query Language] [sql]
SELECT eid, Name, SUBSTRING_INDEX[Date_Joined, ‘-’, 1] AS JoiningYear FROM Employee;
Và đầu ra là,
Hàm SUBSTRING_INDEX[] lồng nhau
Bây giờ, chúng ta hãy tìm tháng gia nhập của mỗi nhân viên từ cột Date_Joined bằng cách sử dụng SUBSTRING_INDEX[]
Code language: SQL [Structured Query Language] [sql]
SELECT eid, Name, SUBSTRING_INDEX[SUBSTRING_INDEX[Date_Joined, ‘-’, 2], ‘-’, -1] AS JoiningMonth FROM Employee;
Hàm MySQL SUBSTRING_INDEX[]
bên trong sẽ trích xuất các giá trị năm và tháng. Hàm SUBSTRING_INDEX[]
bên ngoài có một giá trị âm là tham số 'số'. Do đó, nó sẽ trích xuất chuỗi con từ phía bên phải cho đến lần xuất hiện đầu tiên của dấu phân cách '-'
Và đầu ra của chúng tôi là,
Các hàm SUBSTRING_INDEX[] lồng nhau với các dấu phân cách khác nhau
Bây giờ làm thế nào về việc sử dụng một logic tương tự và hiển thị dịch vụ email nào mà mọi nhân viên sử dụng? . phần com’ không nên có trong kết quả. Vì vậy, truy vấn của chúng tôi là,
Code language: SQL [Structured Query Language] [sql]
SELECT eid, Name, SUBSTRING_INDEX[SUBSTRING_INDEX[Email, ‘@’, -1], ‘.’, 1] AS EmailServiceUsed FROM Employee;
Hàm SUBSTRING_INDEX[]
bên trong sẽ trích xuất phần tên miền từ địa chỉ email. Phần này sẽ chứa tên trang web cũng như ‘. phần com. Nhưng vì chúng tôi không muốn ‘. com’ trong tập hợp kết quả của chúng tôi, chúng tôi sử dụng chức năng bên ngoài SUBSTRING_INDEX[]
để lấy tên trang web
Đầu ra của chúng tôi là,
Phần kết luận
Hàm SUBSTRING_INDEX[]
là một hàm rất mạnh trong MySQL và là một hàm bạn sẽ thấy sử dụng thường xuyên. Tôi thực sự khuyên bạn nên thực hành nhiều ví dụ hơn về nó bằng cách thử với nó