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

Cách trả lại vị trí của một mục danh sách trong MySQL

Trong MySQL, bạn có thể sử dụng FIND_IN_SET() hàm để trả về chỉ mục của một mục danh sách nhất định trong danh sách chuỗi (ví dụ:‘item1, item2, item3,…’).

Hàm nhận hai đối số; chuỗi cần tìm và danh sách để tìm kiếm.

Cú pháp như sau:

FIND_IN_SET(str,strlist)

Ở đâu str là chuỗi bạn đang tìm kiếm và strlist là danh sách chuỗi để tìm kiếm.

Ví dụ

Đây là một ví dụ:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
|      2 |
+--------+

Điều này trả về 2 bởi vì đó là vị trí của chuỗi Dog trong danh sách chuỗi.

Lưu ý rằng chỉ chỉ mục của lần xuất hiện đầu tiên được trả về. Vì vậy, nếu có một sự xuất hiện khác của Dog sau lần đầu tiên đó, chúng tôi vẫn sẽ nhận được kết quả tương tự:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
|      2 |
+--------+

Không có Kết quả phù hợp nào

Khi không tìm thấy chuỗi, kết quả là 0 được trả lại:

SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
|      0 |
+--------+

Điều gì sẽ xảy ra nếu Đối số đầu tiên chứa Dấu phẩy?

Hàm sẽ không trả về kết quả dương nếu đối số đầu tiên chứa dấu phẩy.

Đây là một ví dụ:

SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
|      0 |
+--------+

Trong ví dụ này, người ta có thể mong đợi nó trả về một kết quả dương tính (đã cho Cat,Dog thực sự có trong danh sách), tuy nhiên, dấu phẩy được sử dụng làm dấu phân tách trong danh sách và do đó, đối sánh chuỗi không hoạt động.

Ngoài ra, hãy xem Cách trả lại vị trí của đối số trong danh sách đối số bằng cách sử dụng FIELD() chức năng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Phiên bản MySQL này chưa hỗ trợ 'LIMIT &IN / ALL / ANY / SOME truy vấn con

  2. Làm thế nào để chuyển đổi một truy vấn MSSQL CTE sang MySQL?

  3. Cột số lượng cao hơn đầu tiên trong một chỉ mục khi liên quan đến một phạm vi?

  4. sự khác biệt giữa khóa chính và khóa duy nhất

  5. Cách lấy kích thước của bảng trong MySQL