Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zwrócić pozycję pozycji listy w MySQL?

W MySQL możesz użyć funkcji FIND_IN_SET() funkcja do zwrócenia indeksu danej pozycji listy w liście ciągów (na przykład ‘item1, item2, item3,…’).

Funkcja przyjmuje dwa argumenty; ciąg do znalezienia i listę do przeszukania.

Składnia wygląda tak:

FIND_IN_SET(str,strlist)

Gdzie str to ciąg, którego szukasz, a strlist to lista ciągów do przeszukiwania.

Przykład

Oto przykład:

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

Wynik:

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

Zwraca 2 ponieważ to jest pozycja ciągu Dog na liście ciągów.

Zauważ, że zwracany jest tylko indeks pierwszego wystąpienia. Więc jeśli było inne wystąpienie Dog po tym pierwszym i tak otrzymalibyśmy ten sam wynik:

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

Wynik:

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

Brak dopasowań

Gdy ciąg nie zostanie znaleziony, wynik 0 jest zwracany:

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

Wynik:

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

A co, jeśli pierwszy argument zawiera przecinek?

Funkcja nie zwróci pozytywnego wyniku, jeśli pierwszy argument zawiera przecinek.

Oto przykład:

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

Wynik:

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

W tym przykładzie można by oczekiwać, że zwróci wynik pozytywny (biorąc pod uwagę Cat,Dog znajduje się na liście), jednak przecinek jest używany jako separator na liście, a zatem dopasowanie ciągu nie działa.

Zobacz także Jak zwrócić pozycję argumentu na liście argumentów za pomocą FIELD() funkcja.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Środowisko pracy MySQL

  2. Jak wyodrębnić n-te słowo i policzyć wystąpienia słów w ciągu MySQL?

  3. Jak porównywać wydajność MySQL za pomocą SysBench?

  4. Dlaczego wstawianie MySQL InnoDB jest tak wolne?

  5. Laravel:połącz się z bazami danych dynamicznie