В MariaDB, LOCATE()
е вградена функция за низ, която връща позицията на първото появяване на подниз в друг низ.
LOCATE()
е подобен на INSTR()
функция, с изключение на LOCATE()
предоставя възможност за определяне на начална позиция за търсене. Освен това редът на аргументите е обърнат между тези две функции.
Синтаксис
LOCATE()
функцията поддържа синтаксис с два аргумента и синтаксис с три аргумента.
Синтаксис с два аргумента:
LOCATE(substr,str)
Синтаксис с три аргумента:
LOCATE(substr,str,pos)
Където str
е низът, substr
е поднизът за намиране и pos
е позицията за започване на търсенето.
Пример
Ето един основен пример:
SELECT LOCATE('hot', 'The hot sun');
Резултат:
+------------------------------+| LOCATE('горещо', 'Горещото слънце') |+------------------------------+| 5 |+------------------------------+
Начална позиция
Ето пример за предоставяне на начална позиция за търсене:
SELECT LOCATE('hot', 'The hot sun is really hot', 8);
Резултат:
+------------------------------------------------------- --+| LOCATE('горещо', 'Горещото слънце е наистина горещо', 8) |+------------------------------ -----------------+| 23 |+-------------------------------------------------- -+
Чувствителност на регистрите
LOCATE()
извършва търсене без значение на главни и малки букви:
SELECT LOCATE('HOT', 'The hot sun');
Резултат:
+------------------------------+| LOCATE('HOT', 'Горещото слънце') |+------------------------------+| 5 |+------------------------------+
Множество събития
Ако поднизът се появи повече от веднъж, се връща само позицията на първия (от началната позиция):
SELECT LOCATE('hot', 'The hot sun is really hot');
Резултат:
+----------------------------------------------+| LOCATE('горещо', 'Горещото слънце е наистина горещо') |+-------------------------------- -----------+| 5 |+----------------------------------------------+предварително>Ето го с начална позиция:
SELECT LOCATE('hot', 'The hot sun is really hot', 20);
Резултат:
+------------------------------------------------------- --+| LOCATE('горещо', 'Горещото слънце е наистина горещо', 20) |+------------------------------ -----------------+| 23 |+-------------------------------------------------- -+Частично съвпадение
Ако поднизът е част от по-голяма дума, той все още е съвпадение:
SELECT LOCATE('hot', 'The hottest sun');
Резултат:
+---------------------------------+| LOCATE('горещо', 'Най-горещото слънце') |+----------------------------------+| 5 |+---------------------------------+Но ако низът е само част от подниза, това не е съвпадение:
SELECT LOCATE('hottest', 'The hot sun');
Резултат:
+---------------------------------+| LOCATE('най-горещото', 'Горещото слънце') |+----------------------------------+| 0 |+---------------------------------+Интервали
Знакът за интервал все още е низ, така че можем да включим интервали в подниза, дори ако това е единственият знак:
SELECT LOCATE(' ', 'The hot sun');
Резултат:
+----------------------------+| LOCATE(' ', 'Горещото слънце') |+----------------------------+| 4 |+----------------------------+Празен низ
Ето какво се случва, когато поднизът е празен низ:
SELECT LOCATE('', 'The hot sun');
Резултат:
+---------------------+| LOCATE('', 'Горещото слънце') |+---------------------------+| 1 |+--------------------------+Няма съвпадение
Ако поднизът не е намерен в низа,
LOCATE()
връща0
:SELECT LOCATE('cold', 'The hot sun');
Резултат:
+-------------------------------+| LOCATE('cold', 'The Hot Sun') |+------------------------------+| 0 |+------------------------------+Нулеви аргументи
Предоставяне на
null
за всеки от аргументите се получаваnull
:SELECT LOCATE(null, 'The hot sun'), LOCATE('hot', null);
Резултат:
+----------------------------+---------------- -----+| LOCATE(null, 'Горещото слънце') | LOCATE('hot', null) |+----------------------------+---------- -----------+| NULL | NULL |+-----------------------------+---------------- ----+Предоставяне на грешен брой аргументи
Извикване на
LOCATE()
с грешен брой аргументи или без подаване на аргументи води до грешка:SELECT LOCATE('hot');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „LOCATE“