sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB FIELD() vs FIND_IN_SET():Vad är skillnaden?

Två liknande funktioner i MariaDB är FIELD() och FIND_IN_SET() . Vid första anblicken verkar dessa göra samma sak, men det finns en skillnad.

Den här artikeln tittar på skillnaden mellan dessa två funktioner.

Syntax och definitioner

Låt oss först titta på syntaxen och definitionen av varje funktion:

Funktion Syntax Definition
FIELD() FIELD(pattern, str1[,str2,...]) Återställer indexpositionen för strängen eller numret som matchar det givna mönstret.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Återställer indexpositionen där det givna mönstret förekommer i en stränglista.

Båda funktionerna accepterar ett pattern som deras första argument. Men det är vad som kommer härnäst som framhäver deras skillnader:

  • FIELD() accepterar en eller flera strängar, separerade med kommatecken.
  • FIND_IN_SET() accepterar en lista med en enda sträng.

Exempel

Här är ett exempel som visar skillnaden mellan dessa två funktioner:

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

Resultat:

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

Varje funktion returnerade samma resultat, men varje funktion accepterade strängarna i olika format.

Värdena som tillhandahålls till FIELD() kom som tre separata argument, medan värdena till FIND_IN_SET() kom som en enda stränglista (som innehöll de separata värdena).


  1. MySQL - Operand bör innehålla 1 kolumn(er)

  2. Så här fixar du "profilnamnet är inte giltigt" när du uppdaterar en e-postprofil för databas i SQL Server (T-SQL)

  3. Hur man ställer in boolvärde i SQL

  4. Byt namn på en CHECK-begränsning i SQL Server med T-SQL