sql >> Databasteknik >  >> RDS >> MariaDB

Hur FIND_IN_SET() fungerar i MariaDB

I MariaDB, FIND_IN_SET() är en inbyggd strängfunktion som returnerar indexpositionen där det givna mönstret förekommer i den angivna stränglistan.

Den godtar två argument. Det första är mönstret du vill söka efter. Det andra argumentet är en sträng som innehåller kommaseparerade värden som mönstret ska matchas mot.

Syntax

Syntaxen ser ut så här:

FIND_IN_SET(pattern, strlist)

Där pattern är mönstret du vill söka efter, och strlist representerar strängen av kommaseparerade värden som ska sökas.

Exempel

Här är ett grundläggande exempel:

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

Resultat:

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

I det här fallet, mönstret (Green ) förekommer vid den andra positionen, och så 2 returneras.

Ingen match

Om det inte finns någon matchning, 0 returneras.

Exempel:

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

Resultat:

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

Flera matchningar

Om det finns flera matchningar, returneras endast indexet för den första:

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

Resultat:

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

Ange ett nollmönster

Tillhandahåller null eftersom det första argumentet resulterar i null returneras:

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

Resultat:

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

Ange en nollsträngslista

Tillhandahåller null eftersom det andra argumentet också resulterar i null :

SELECT FIND_IN_SET('Dog', null);

Resultat:

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

Töm stränglista

Om stränglistan är tom, FIND_IN_SET() returnerar 0 :

SELECT FIND_IN_SET('Dog', '');

Resultat:

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

Komma i mönstret

FIND_IN_SET() returnerar inte rätt resultat om mönstret innehåller ett kommatecken:

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

Resultat:

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

Enstaka argument

Skickar bara ett argument till FIND_IN_SET() returnerar ett fel:

SELECT FIND_IN_SET('Cat');

Resultat:

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

Argument saknas

Anropar FIND_IN_SET() utan att skicka några argument resulterar i ett fel:

SELECT FIND_IN_SET();

Resultat:

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

  1. Hur DEGREES() fungerar i MariaDB

  2. Min DBA är sjuk - Databas Failover Tips för SysAdmins

  3. Oracle 11g - Hur man optimerar långsamt parallellt insertval?

  4. Android SQLite:Hur genererar man en stor tabell för teständamål?