MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB FIELD() vs FIND_IN_SET():jaka jest różnica?

Dwie podobne funkcje w MariaDB to FIELD() i FIND_IN_SET() . Na pierwszy rzut oka wydaje się, że robią to samo, ale jest różnica.

W tym artykule przyjrzymy się różnicy między tymi dwiema funkcjami.

Składnia i definicje

Najpierw spójrzmy na składnię i definicję każdej funkcji:

Funkcja Składnia Definicja
FIELD() FIELD(pattern, str1[,str2,...]) Zwraca pozycję indeksu ciągu lub liczby pasującej do podanego wzorca.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Zwraca pozycję indeksu, w której dany wzorzec występuje na liście ciągów.

Obie funkcje akceptują pattern jako ich pierwszy argument. Jednak to, co następuje później, podkreśla ich różnice:

  • FIELD() akceptuje jeden lub więcej ciągów oddzielonych przecinkiem.
  • FIND_IN_SET() akceptuje pojedynczą listę ciągów.

Przykład

Oto przykład, który pokazuje różnicę między tymi dwiema funkcjami:

SELECT 
    FIELD('bat', 'cat','dog','bat') AS "FIELD()",
    FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";

Wynik:

+---------+---------------+
| FIELD() | FIND_IN_SET() |
+---------+---------------+
|       3 |             3 |
+---------+---------------+

Każda funkcja zwróciła ten sam wynik, ale każda funkcja przyjęła ciągi w innym formacie.

Wartości dostarczone do FIELD() przyszły jako trzy oddzielne argumenty, podczas gdy wartości dostarczone do FIND_IN_SET() przyszedł jako pojedyncza lista ciągów (która zawierała oddzielne wartości).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB LCASE() Objaśnienie

  2. 2 sposoby na wyświetlenie listy wszystkich funkcji w MariaDB

  3. Ciągi formatu daty MariaDB

  4. Wprowadzenie do wdrażania MySQL przy użyciu roli Ansible

  5. Jak ADDDATE() działa w MariaDB