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

Różnica między FIELD() i FIND_IN_SET() w MySQL

MySQL zawiera FIELD() funkcja i FIND_IN_SET() funkcja, która obie zwracają pozycję ciągu na liście. Jednak te funkcje działają nieco inaczej.

Główna różnica między tymi dwiema funkcjami jest następująca:

  • FIND_IN_SET() zwraca pozycję indeksu ciągu w liście ciągów.
  • FIELD() zwraca pozycję indeksu ciągu na liście argumentów.

Więc jedna funkcja przeszukuje listę ciągów , a druga funkcja przeszukuje listę argumentów .

Składnia

Najpierw spójrzmy na składnię dwóch funkcji:

POLE()

Składnia FIELD() funkcja wygląda tak:

FIELD(str,str1,str2,str3,...)

Składa się z początkowego argumentu, po którym następuje wiele kolejnych argumentów. Przeszukiwane są kolejne argumenty – bez względu na to, ile ich jest.

ZNAJDŹ_W_ZESTAWIE()

Składnia FIND_IN_SET() funkcja wygląda tak:

FIND_IN_SET(str,strlist)

Składa się z początkowego argumentu, po którym następuje jeszcze jeden argument. Drugi argument zawiera listę ciągów do przeszukania.

Przykłady

POLE()

Oto przykład FIELD() funkcja w akcji:

SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';

Wynik:

+--------+
| Result |
+--------+
|      3 |
+--------+

ZNAJDŹ_W_ZESTAWIE()

A oto jak FIND_IN_SET() funkcja zostałaby skonstruowana tak, aby uzyskać ten sam wynik:

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

Wynik:

+--------+
| Result |
+--------+
|      3 |
+--------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skalowanie rozwiązań dla MySQL (replikacja, klastrowanie)

  2. Czy mogę sparametryzować nazwę tabeli w przygotowanym zestawieniu?

  3. Oblicz wiek na podstawie daty urodzenia

  4. Jak działa operator RLIKE w MySQL

  5. Jak podzielić ciąg w MySQL