В 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“