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

Как работи LOCATE() в MariaDB

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

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

  2. MariaDB JSON_ARRAY_APPEND() Обяснено

  3. Как да генерираме произволно цяло число в рамките на диапазон в MariaDB

  4. Как работи FIELD() в MariaDB

  5. Създаване на клъстер с гео-разпределена база данни с помощта на MySQL репликация