В MariaDB, POSITION()
е вградена функция за низ, която връща позицията на първото появяване на подниз в друг низ. Той е част от ODBC 3.0.
POSITION(substr IN str)
е синоним на LOCATE(substr,str)
.
POSITION()
също е подобен на INSTR()
функция, с изключение на POSITION()
използва IN
синтаксис и че редът на аргументите е обърнат между тези две функции.
Синтаксис
Синтаксисът е така:
POSITION(substr IN str)
Където str
е низът и substr
е поднизът, за който да се върне позицията.
Пример
Ето един основен пример:
SELECT POSITION('cute' IN 'My cute dog');
Резултат:
+---------------------------------+| POSITION('cute' IN 'My cute dog') |+-----------------------------------+ | 4 |+-----------------------------------+
Чувствителност на регистрите
POSITION()
извършва търсене без значение на главни и малки букви:
SELECT POSITION('CUTE' IN 'My cute dog');
Резултат:
+---------------------------------+| POSITION('CUTE' В 'Моето сладко куче') |+-----------------------------------+ | 4 |+-----------------------------------+
Множество събития
Ако поднизът се появи повече от веднъж, се връща само позицията на първия (от началната позиция):
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');
Резултат:
+------------------------------------------------------- ----+| POSITION('cute' IN 'Моето сладко куче е МНОГО сладко!') |+-------------------------------- ------------------+| 4 |+------------------------------------------------- ---+
Частично съвпадение
Ако поднизът е част от по-голяма дума, той все още е съвпадение:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Резултат:
+----------------------------------------------------+ | POSITION('куче' В 'Моето кученце е МНОГО сладко!') |+--------------------------------------- ------------+| 4 |+-----------------------------------------------+предварително>Но ако низът е само част от подниза, това не е съвпадение:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Резултат:
+----------------------------------------------------+ | POSITION('doggy' IN 'Кучето ми е МНОГО сладко!') |+--------------------------------------- ------------+| 0 |+-----------------------------------------------+предварително>Интервали
Знакът за интервал все още е низ, така че можем да включим интервали в подниза, дори ако това е единственият знак:
SELECT POSITION(' ' IN 'My dog');
Резултат:
+---------------------+| POSITION(' ' В 'Моето куче') |+---------------------------+| 3 |+--------------------------+Празен низ
Ето какво се случва, когато поднизът е празен низ:
SELECT POSITION('' IN 'My dog');
Резултат:
+-------------------------+| ПОЗИЦИЯ('' В 'Моето куче') |+--------------------------+| 1 |+-------------------------+Няма съвпадение
Ако поднизът не е намерен в низа,
POSITION()
връща0
:SELECT position('cat' IN 'My dog');
Резултат:
+----------------------------+| позиция('котка' В 'Моето куче') |+----------------------------+| 0 |+----------------------------+Нулеви аргументи
Предоставяне на
null
за всеки от аргументите се получаваnull
:SELECT POSITION(null IN 'My dog'), POSITION('dog' IN null);
Резултат:
+----------------------------+---------------- --------+| POSITION(null В 'Моето куче') | POSITION('dog' IN null) |+----------------------------+----------- --------------+| NULL | NULL |+----------------------------+-------------- -------+Предоставяне на грешен брой аргументи
Извикване на
POSITION()
с грешен брой аргументи или без подаване на аргументи води до грешка:SELECT POSITION('dog');
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1