Hai hàm tương tự trong MariaDB là FIELD()
và FIND_IN_SET()
. Thoạt nhìn, những thứ này có vẻ giống nhau, nhưng có sự khác biệt.
Bài viết này xem xét sự khác biệt giữa hai chức năng này.
Cú pháp và Định nghĩa
Trước tiên, hãy xem cú pháp và định nghĩa của từng hàm:
Hàm | Cú pháp | Định nghĩa |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | Trả về vị trí chỉ mục của chuỗi hoặc số khớp với mẫu đã cho. |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | Trả về vị trí chỉ mục nơi mẫu đã cho xuất hiện trong danh sách chuỗi. |
Cả hai hàm đều chấp nhận một pattern
như đối số đầu tiên của họ. Tuy nhiên, điều tiếp theo sẽ làm nổi bật sự khác biệt của chúng:
-
FIELD()
chấp nhận một hoặc nhiều chuỗi, được phân tách bằng dấu phẩy. -
FIND_IN_SET()
chấp nhận một danh sách chuỗi đơn.
Ví dụ
Dưới đây là một ví dụ chứng minh sự khác biệt giữa hai chức năng này:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
Kết quả:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
Mỗi hàm trả về cùng một kết quả, nhưng mỗi hàm chấp nhận các chuỗi ở một định dạng khác nhau.
Các giá trị được cung cấp cho FIELD()
xuất hiện dưới dạng ba đối số riêng biệt, trong khi các giá trị được cung cấp cho FIND_IN_SET()
đến như một danh sách chuỗi đơn (chứa các giá trị riêng biệt).