MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie FIND_IN_SET() in MariaDB funktioniert

In MariaDB FIND_IN_SET() ist eine eingebaute Zeichenfolgenfunktion, die die Indexposition zurückgibt, an der das angegebene Muster in der angegebenen Zeichenfolgenliste vorkommt.

Es akzeptiert zwei Argumente. Das erste ist das Muster, nach dem Sie suchen möchten. Das zweite Argument ist eine Zeichenfolge mit durch Kommas getrennten Werten, für die das Muster abgeglichen werden soll.

Syntax

Die Syntax lautet wie folgt:

FIND_IN_SET(pattern, strlist)

Wobei pattern das Muster ist, nach dem Sie suchen möchten, und strlist stellt die Zeichenfolge von durch Kommas getrennten Werten dar, die durchsucht werden sollen.

Beispiel

Hier ist ein einfaches Beispiel:

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

Ergebnis:

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

In diesem Fall ist das Muster (Green ) steht an zweiter Stelle, also 2 zurückgegeben wird.

Keine Übereinstimmung

Wenn es keine Übereinstimmung gibt, 0 zurückgegeben wird.

Beispiel:

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

Ergebnis:

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

Mehrere Übereinstimmungen

Bei mehreren Übereinstimmungen wird nur der Index der ersten zurückgegeben:

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

Ergebnis:

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

Angeben eines Nullmusters

Bereitstellung von null als erstes Argument ergibt null zurückgegeben:

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

Ergebnis:

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

Angabe einer Null-String-Liste

Bereitstellung von null da das zweite Argument auch null ergibt :

SELECT FIND_IN_SET('Dog', null);

Ergebnis:

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

Leere Zeichenfolgenliste

Wenn die Zeichenfolgenliste leer ist, FIND_IN_SET() gibt 0 zurück :

SELECT FIND_IN_SET('Dog', '');

Ergebnis:

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

Komma im Muster

FIND_IN_SET() gibt nicht das richtige Ergebnis zurück, wenn das Muster ein Komma enthält:

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

Ergebnis:

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

Einzelnes Argument

Übergeben von nur einem Argument an FIND_IN_SET() gibt einen Fehler zurück:

SELECT FIND_IN_SET('Cat');

Ergebnis:

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

Fehlendes Argument

Aufruf von FIND_IN_SET() ohne Übergabe von Argumenten ergibt sich ein Fehler:

SELECT FIND_IN_SET();

Ergebnis:

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