Bạn có thể sử dụng MySQL SUBSTRING_INDEX()
hàm để trả về mọi thứ trước hoặc sau một ký tự (hoặc các ký tự) nhất định trong một chuỗi.
Hàm này cho phép bạn chỉ định dấu phân cách để sử dụng và bạn có thể chỉ định dấu phân tách nào (trong trường hợp có nhiều dấu phân tách trong chuỗi).
Cú pháp
Đây là cú pháp:
SUBSTRING_INDEX(str,delim,count)
Ở đâu str
là chuỗi, delim
là dấu phân cách (mà từ đó bạn muốn một chuỗi con ở bên trái hoặc bên phải của) và count
chỉ định dấu phân tách nào (trong trường hợp có nhiều lần xuất hiện dấu phân tách trong chuỗi).
Lưu ý rằng dấu phân cách có thể là một ký tự hoặc nhiều ký tự.
Ví dụ 1 - Chọn Mọi thứ ở Bên trái
Để chọn mọi thứ trước đó một ký tự nhất định, sử dụng một giá trị dương:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Kết quả:
Cats,Dogs
Trong ví dụ này, chúng tôi chọn mọi thứ trước dấu phẩy thứ hai. Điều này được thực hiện bằng cách sử dụng dấu phẩy (,
) làm dấu phân cách và 2
như số lượng.
Ví dụ 2 - Chọn Mọi thứ ở Bên phải
Để chọn mọi thứ sau một ký tự nhất định, bạn cần sử dụng giá trị âm:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Kết quả:
Dogs,Rabbits
Lưu ý rằng giá trị âm có nghĩa là nó sẽ được tính từ bên phải, sau đó chọn chuỗi con ở bên phải dấu phân cách.
Điều gì sẽ xảy ra nếu Dấu phân cách không khớp?
Nếu không tìm thấy dấu phân tách trong chuỗi, chuỗi chỉ được trả về đầy đủ.
Ví dụ:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Kết quả:
Cats,Dogs,Rabbits
Trong trường hợp này, toàn bộ chuỗi được trả về đầy đủ vì chúng tôi đã sử dụng dấu gạch ngang (-
) làm dấu phân cách nhưng không có dấu gạch nối trong chuỗi.
Chúng tôi sẽ nhận được kết quả tương tự nếu chuỗi does chứa dấu phân tách, nhưng count
của chúng tôi vượt quá số lượng dấu phân cách trong chuỗi.
Ví dụ:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Kết quả:
Cats,Dogs,Rabbits
Phân biệt chữ hoa chữ thường
SUBSTRING_INDEX()
hàm thực hiện tìm kiếm phân biệt chữ hoa chữ thường. Đó là, dấu phân cách cần phải là trường hợp chính xác trước khi nó khớp.
Trường hợp không chính xác
Dưới đây là một ví dụ về trường hợp không khớp:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Kết quả:
Cats and Dogs and Rabbits
Chúng tôi nhận được toàn bộ chuỗi đầy đủ.
Trường hợp đúng
Đây là ví dụ tương tự, nhưng trường hợp khớp với nhau:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Kết quả:
Cats and Dogs