В MySQL POSITION()
функцията връща позицията на първото появяване на подниз в низа.
Тази функция всъщност е синоним на LOCATE()
, но с малко по-различен синтаксис. LOCATE()
функцията също има допълнителна функционалност, тъй като ви позволява да дефинирате начална позиция за вашето търсене.
Синтаксис
Основният синтаксис е така:
POSITION(substr IN str)
Където substr
е поднизът и str
е низът.
Пример 1 – Основна употреба
SELECT POSITION('Cat' IN 'The Cat') Result;
Резултат:
+--------+ | Result | +--------+ | 5 | +--------+
Пример 2 – Чувствителност на малки и малки букви
POSITION()
функцията е многобайтова безопасна и е чувствителна към малките букви само ако поне един аргумент е двоичен низ.
Така че следният пример не е чувствителен към малки и големи букви:
SELECT POSITION('Cat' IN 'The Cat') Result;
Резултат:
+--------+ | Result | +--------+ | 5 | +--------+
Пример 3 – Няма съвпадение
Функцията връща 0
ако поднизът не е намерен в низа:
SELECT POSITION('Dog' IN 'The cat') Result;
Резултат:
+--------+ | Result | +--------+ | 0 | +--------+
Пример 4 – Вградени поднизове
Бъдете внимателни при избора на подниз. Ако е част от друга дума, можете да получите фалшиво положително:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Резултат:
+--------+ | Result | +--------+ | 6 | +--------+
Ако търсите само котка , животното, това би било фалшиво положително.
Пример 5 – Само първо появяване
Не забравяйте, че тази функция връща само позицията на първия поява на подниз. Всички последващи събития се игнорират:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Резултат:
+--------+ | Result | +--------+ | 4 | +--------+
Пример 6 – NULL аргументи
Ако някой от аргументите е NULL
, резултатът е NULL
:
SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Резултат:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
Както споменахме, можете също да използвате LOCATE()
функция, която ви позволява да дефинирате начална позиция за вашето търсене.