В 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