Computer >> Máy Tính >  >> Lập trình >> MySQL

Sự khác biệt giữa các hàm MySQL INSTR () và FIND_IN_SET () là gì?

Như chúng ta đã biết, cả hai hàm đều được sử dụng để tìm kiếm một chuỗi từ các đối số được cung cấp trong chúng nhưng có một số khác biệt đáng kể giữa chúng như sau

  • Hàm FIND_IN_SET () sử dụng danh sách chuỗi mà bản thân nó là một chuỗi chứa chuỗi con được phân tách bằng dấu phẩy. Trong khi đó, hàm INSTR () chứa một chuỗi mà từ đó nó sẽ tìm vị trí xuất hiện đầu tiên của chuỗi con nếu có.
  • Trong trường hợp là số nguyên, hàm FIND_IN_SET () phù hợp hơn nhiều so với hàm INSTR (). Có thể hiểu điều này qua ví dụ sau

Ví dụ

mysql> Select IF(INSTR('10,11,12,13',2) > 0,1,0) As Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.05 sec)

mysql> Select IF(FIND_IN_SET(2,'10,11,12,13') > 0,1,0)As Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

Từ tập kết quả của các ví dụ trên, chúng ta có thể thấy rằng hàm INSTR () trả về 1 thậm chí 2 vì một chuỗi không có trong các đối số. Nhưng hàm FIND_IN_SET () trả về 0 là câu trả lời đúng.