В MariaDB, FIND_IN_SET()
е вградена функция за низове, която връща позицията на индекса, където дадения модел се среща в посочения списък с низове.
Приема два аргумента. Първият е моделът, който искате да търсите. Вторият аргумент е низ, съдържащ стойности, разделени със запетая, за които да съпоставим шаблона.
Синтаксис
Синтаксисът е така:
FIND_IN_SET(pattern, strlist)
Където pattern
е шаблонът, който искате да търсите, и strlist
представлява низ от стойности, разделени със запетая, за търсене.
Пример
Ето един основен пример:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Резултат:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
В този случай шаблонът (Green
) се появява на втора позиция и така 2
се връща.
Няма съвпадение
Ако няма съвпадение, 0
се връща.
Пример:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Резултат:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Множество съвпадения
Ако има няколко съвпадения, се връща само индексът на първото:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Резултат:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Указване на нулев модел
Предоставяне на null
тъй като първият аргумент води до null
се връща:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Резултат:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Указване на списък с нулеви низове
Предоставяне на null
тъй като вторият аргумент също води до null
:
SELECT FIND_IN_SET('Dog', null);
Резултат:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Списък с празни низове
Ако списъкът с низове е празен, FIND_IN_SET()
връща 0
:
SELECT FIND_IN_SET('Dog', '');
Резултат:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Запетая в шаблона
FIND_IN_SET()
не връща правилния резултат, ако шаблонът съдържа запетая:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Резултат:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Единичен аргумент
Подаване само на един аргумент към FIND_IN_SET()
връща грешка:
SELECT FIND_IN_SET('Cat');
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Липсващ аргумент
Извикване на FIND_IN_SET()
без подаване на аргументи води до грешка:
SELECT FIND_IN_SET();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'