Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chọn mọi thứ trước / sau một ký tự nhất định trong MySQL - SUBSTRING_INDEX ()

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu mặc định của MySQL

  2. Làm cách nào để làm trễ các cột trong MySQL?

  3. Làm cách nào để xem tất cả các khóa ngoại cho một bảng hoặc cột?

  4. mysqli hay chết, nó có phải chết không?

  5. Lưu trữ và hiển thị chuỗi unicode (हिन्दी) bằng PHP và MySQL