Trong MariaDB, FIND_IN_SET()
là một hàm chuỗi tích hợp trả về vị trí chỉ mục nơi mẫu đã cho xuất hiện trong danh sách chuỗi được chỉ định.
Nó chấp nhận hai đối số. Đầu tiên là mẫu bạn muốn tìm kiếm. Đối số thứ hai là một chuỗi chứa các giá trị được phân tách bằng dấu phẩy để khớp với mẫu.
Cú pháp
Cú pháp như sau:
FIND_IN_SET(pattern, strlist)
Ở đâu pattern
là mẫu bạn muốn tìm kiếm và strlist
đại diện cho chuỗi các giá trị được phân tách bằng dấu phẩy để tìm kiếm.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Kết quả:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
Trong trường hợp này, mẫu (Green
) xảy ra ở vị trí thứ hai, và vì vậy 2
được trả lại.
Không phù hợp
Nếu không có kết quả phù hợp, 0
được trả lại.
Ví dụ:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Kết quả:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Nhiều Kết hợp
Nếu có nhiều kết quả phù hợp, chỉ chỉ mục của kết quả đầu tiên được trả về:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Kết quả:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Chỉ định một mẫu Null
Cung cấp null
vì đối số đầu tiên dẫn đến null
được trả lại:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Kết quả:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Chỉ định danh sách chuỗi rỗng
Cung cấp null
vì đối số thứ hai cũng dẫn đến null
:
SELECT FIND_IN_SET('Dog', null);
Kết quả:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Danh sách chuỗi trống
Nếu danh sách chuỗi trống, FIND_IN_SET()
trả về 0
:
SELECT FIND_IN_SET('Dog', '');
Kết quả:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Dấu phẩy trong mẫu
FIND_IN_SET()
không trả về kết quả chính xác nếu mẫu chứa dấu phẩy:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Kết quả:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Đối số đơn
Chỉ chuyển một đối số tới FIND_IN_SET()
trả về một lỗi:
SELECT FIND_IN_SET('Cat');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Thiếu đối số
Gọi FIND_IN_SET()
mà không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT FIND_IN_SET();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'