Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи функцията LOCATE() в MySQL

В MySQL, LOCATE() функцията връща позицията на подниз в низ. По-конкретно, той връща позицията на първото появяване в низа или първото появяване след дадена начална точка.

Синтаксис

Може да се използва по един от следните начини:

LOCATE(substr,str)LOCATE(substr,str,pos)

Където substr е поднизът за намиране и str е низът за търсене.

Когато използвате втория синтаксис, pos е позицията за започване на търсене.

Пример 1 – Първи синтаксис

Ето пример за използване на първия синтаксис:

SELECT LOCATE('cat', 'Една котка прескочи другата котка') КАТО Резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 5 |+-------+

Пример 2 – Втори синтаксис

Ето пример, в който посочваме начална позиция, за да започнем търсенето:

SELECT LOCATE('cat', 'Една котка скочи над другата котка', 6) КАТО Резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 31 |+--------+

В този случай, първото появяване на cat започва от позиция 5, но посочих търсенето да започне от позиция 6. Следователно позицията на следващото появяване на този низ беше тази, която беше върната.

Имайте предвид, че въпреки че търсенето е започнало на позиция 6, функцията все още връща позицията на подниза в низа – не от началната позиция.

Ето още един пример, който да ви помогне да направите това по-ясно.

ИЗБЕРЕТЕ LOCATE('c', 'a b c', 1) КАТО 'Резултат 1', LOCATE('c', 'a b c', 2) КАТО 'Резултат 2', LOCATE('c', 'a b в“, 4) AS „Резултат 3“;

Резултат:

+----------+-----------+---------+| Резултат 1 | Резултат 2 | Резултат 3 |+----------+----------+----------+| 5 | 5 | 5 |+---------+----------+---------+

Резултатът е един и същ, независимо къде започнем да търсим.

Пример 3 – Намиране на част от дума

Поднизът може да бъде част от по-дълга дума:

SELECT LOCATE('sing', 'Inceasingly') КАТО резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 7 |+-------+

Всъщност няма изискване дори да е дума (в края на краищата ние просто търсим низ):

ИЗБЕРЕТЕ LOCATE('z23!#', 'u_4, z23!#') КАТО 'Резултат 1', LOCATE(' ', 'a b c') КАТО 'Резултат 2', LOCATE(',', 'cat , куче, птица") КАТО "Резултат 3";

Резултат:

+----------+-----------+---------+| Резултат 1 | Резултат 2 | Резултат 3 |+----------+----------+----------+| 6 | 2 | 4 |+---------+-----------+---------+

Пример 4 – Няма съвпадения

Ако поднизът не е намерен, 0 се връща:

ИЗБЕРЕТЕ LOCATE('Bat', 'Inceasingly') КАТО резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 0 |+-------+

Пример 5 – Чувствителност на малки и малки букви

Тази функция е многобайтова безопасна и е чувствителна към малките букви само ако поне един аргумент е двоичен низ.

Следователно следното работи с недвоични низове, въпреки че случаят не съвпада:

ИЗБЕРЕТЕ LOCATE('Sing', 'Inceasingly') КАТО резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 7 |+-------+

Но ако използваме двоичен низ, това се случва:

SET @str =BINARY 'Все повече'; SELECT LOCATE('Sing', @str) КАТО резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 0 |+-------+

Но разбира се, ако го променим така, че случайът да съвпада, получаваме съвпадение:

SET @str =BINARY 'Все повече'; SELECT LOCATE('sing', @str) КАТО резултат;

Резултат:

<пред>+--------+| Резултат |+--------+| 7 |+-------+

Пример 6 – NULL аргументи

Ако някой от аргументите е NULL , NULL се връща:

SELECT LOCATE(NULL, 'Increasingly') a, LOCATE('Bat', NULL) b, LOCATE('Bat', 'Increasingly', NULL) c;

Резултат:

+------+------+------+| а | б | c |+------+------+------+| NULL | NULL | NULL |+------+------+------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете се с MySQL отдалечено

  2. Как да премахна нови знаци от редове от данни в mysql?

  3. Как да създадете динамични обобщени таблици в MySQL

  4. Възстановяване на изтрития 'root' потребител и парола за MySQL

  5. Грешка в MySql:Не може да се актуализира таблицата в съхранената функция/тригера, защото вече се използва от израз, който е извикал тази съхранена функция/тригер