sql >> Databáze >  >> RDS >> MariaDB

Jak FIND_IN_SET() funguje v MariaDB

V MariaDB, FIND_IN_SET() je vestavěná řetězcová funkce, která vrací pozici indexu, kde se daný vzor vyskytuje v zadaném seznamu řetězců.

Přijímá dva argumenty. První je vzor, ​​který chcete hledat. Druhým argumentem je řetězec obsahující hodnoty oddělené čárkami, pro které se má porovnat vzor.

Syntaxe

Syntaxe vypadá takto:

FIND_IN_SET(pattern, strlist)

Kde pattern je vzor, ​​který chcete hledat, a strlist představuje řetězec hodnot oddělených čárkami, které se mají hledat.

Příklad

Zde je základní příklad:

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

Výsledek:

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

V tomto případě vzor (Green ) se vyskytuje na druhé pozici, a tedy 2 je vráceno.

Žádná shoda

Pokud neexistuje žádná shoda, 0 je vráceno.

Příklad:

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

Výsledek:

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

Více shod

Pokud existuje více shod, vrátí se pouze index první z nich:

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

Výsledek:

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

Určení vzoru Null

Poskytování null jako první argument je výsledkem null se vrací:

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

Výsledek:

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

Určení seznamu prázdných řetězců

Poskytování null jako druhý argument má také za následek null :

SELECT FIND_IN_SET('Dog', null);

Výsledek:

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

Prázdný seznam řetězců

Pokud je seznam řetězců prázdný, FIND_IN_SET() vrátí 0 :

SELECT FIND_IN_SET('Dog', '');

Výsledek:

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

Čárka ve vzoru

FIND_IN_SET() nevrací správný výsledek, pokud vzor obsahuje čárku:

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

Výsledek:

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

Jeden argument

Předání pouze jednoho argumentu do FIND_IN_SET() vrátí chybu:

SELECT FIND_IN_SET('Cat');

Výsledek:

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

Chybí argument

Volání FIND_IN_SET() bez předání jakýchkoli argumentů dojde k chybě:

SELECT FIND_IN_SET();

Výsledek:

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

  1. Upozornění:mysqli_query() očekává, že parametr 1 bude mysqli, daný zdroj

  2. Chyba MySQL 1170 (42000):Sloupec BLOB/TEXT použitý ve specifikaci klíče bez délky klíče

  3. Jak mohu vybrat ze seznamu hodnot v SQL Server

  4. Převeďte řetězec oddělený čárkami na pole v PL/SQL