sql >> Database >  >> RDS >> MariaDB

Hoe FIND_IN_SET() werkt in MariaDB

In MariaDB, FIND_IN_SET() is een ingebouwde tekenreeksfunctie die de indexpositie retourneert waar het gegeven patroon voorkomt in de opgegeven tekenreekslijst.

Het aanvaardt twee argumenten. De eerste is het patroon waarnaar u wilt zoeken. Het tweede argument is een string die door komma's gescheiden waarden bevat waarmee het patroon overeenkomt.

Syntaxis

De syntaxis gaat als volgt:

FIND_IN_SET(pattern, strlist)

Waar pattern is het patroon waarnaar u wilt zoeken, en strlist vertegenwoordigt de reeks door komma's gescheiden waarden om te zoeken.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT FIND_IN_SET('Green', 'Red,Green,Blue');

Resultaat:

+----------------------------------------+
| FIND_IN_SET('Green', 'Red,Green,Blue') |
+----------------------------------------+
|                                      2 |
+----------------------------------------+

In dit geval is het patroon (Green ) komt voor op de tweede positie, en dus 2 wordt geretourneerd.

Geen overeenkomst

Als er geen overeenkomst is, 0 wordt geretourneerd.

Voorbeeld:

SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');

Resultaat:

+---------------------------------------+
| FIND_IN_SET('Nope', 'Red,Green,Blue') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+

Meerdere wedstrijden

Als er meerdere overeenkomsten zijn, wordt alleen de index van de eerste geretourneerd:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');

Resultaat:

+-------------------------------------------+
| FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') |
+-------------------------------------------+
|                                         2 |
+-------------------------------------------+

Een nulpatroon specificeren

null opgeven aangezien het eerste argument resulteert in null wordt geretourneerd:

SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');

Resultaat:

+----------------------------------+
| FIND_IN_SET(null, 'Cat,Dog,Cat') |
+----------------------------------+
|                             NULL |
+----------------------------------+

Een Null String-lijst specificeren

null opgeven aangezien het tweede argument ook resulteert in null :

SELECT FIND_IN_SET('Dog', null);

Resultaat:

+--------------------------+
| FIND_IN_SET('Dog', null) |
+--------------------------+
|                     NULL |
+--------------------------+

Lege tekenreekslijst

Als de tekenreekslijst leeg is, FIND_IN_SET() retourneert 0 :

SELECT FIND_IN_SET('Dog', '');

Resultaat:

+------------------------+
| FIND_IN_SET('Dog', '') |
+------------------------+
|                      0 |
+------------------------+

Komma in het patroon

FIND_IN_SET() geeft niet het juiste resultaat als het patroon een komma bevat:

SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');

Resultaat:

+-----------------------------------------+
| FIND_IN_SET('Green,', 'Red,Green,Blue') |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+

Enkel argument

Slechts één argument doorgeven aan FIND_IN_SET() geeft een fout:

SELECT FIND_IN_SET('Cat');

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'

Ontbrekend argument

Aanroepen van FIND_IN_SET() zonder het doorgeven van argumenten resulteert in een fout:

SELECT FIND_IN_SET();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'

  1. Een blik op de Oracle Group-by Bug

  2. 15 fundamentele MySQL-interviewvragen voor databasebeheerders

  3. Wat is cursor in orakel

  4. SQL LocalDB versus SQL Server CE