MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como LOCATE() funciona no MariaDB


No MariaDB, LOCATE() é uma função de string interna que retorna a posição da primeira ocorrência de uma substring dentro de outra string.

LOCATE() é semelhante ao INSTR() função, exceto que LOCATE() oferece a opção de especificar uma posição inicial para a pesquisa. Além disso, a ordem dos argumentos é invertida entre essas duas funções.

Sintaxe


O LOCATE() A função suporta uma sintaxe de dois argumentos e uma sintaxe de três argumentos.

Sintaxe de dois argumentos:
LOCATE(substr,str) 

Sintaxe de três argumentos:
LOCATE(substr,str,pos) 

Onde str é a string, substr é a substring a ser encontrada e pos é a posição para iniciar a pesquisa.

Exemplo


Segue um exemplo básico:
SELECT LOCATE('hot', 'The hot sun'); 

Resultado:
+------------------------------+| LOCATE('quente', 'O sol quente') |+------------------------------+| 5 |+------------------------------+

Posição inicial


Aqui está um exemplo de como fornecer uma posição inicial para a pesquisa:
SELECT LOCATE('hot', 'The hot sun is really hot', 8); 

Resultado:
+---------------------------------------------- --+| LOCATE('quente', 'O sol quente está muito quente', 8) |+------------------------------------------ ------------------+| 23 |+---------------------------------------------------------- -+

Sensibilidade de maiúsculas e minúsculas


LOCATE() executa uma pesquisa que não diferencia maiúsculas de minúsculas:
SELECT LOCATE('HOT', 'The hot sun'); 

Resultado:
+------------------------------+| LOCATE('HOT', 'O sol quente') |+-----------------------------------------+| 5 |+------------------------------+

Várias ocorrências


Se a substring ocorrer mais de uma vez, apenas a posição da primeira (da posição inicial) é retornada:
SELECT LOCATE('hot', 'The hot sun is really hot'); 

Resultado:
+--------------------------------------------+| LOCATE('quente', 'O sol quente está muito quente') |+--------------------------------- -----------+| 5 |+--------------------------------------------+ 
Aqui está com uma posição inicial:
SELECT LOCATE('hot', 'The hot sun is really hot', 20); 

Resultado:
+---------------------------------------------- --+| LOCATE('quente', 'O sol quente está muito quente', 20) |+------------------------------- ------------------+| 23 |+---------------------------------------------------------- -+

Correspondência Parcial


Se a substring fizer parte de uma palavra maior, ainda será uma correspondência:
SELECT LOCATE('hot', 'The hottest sun'); 

Resultado:
+----------------------------------+| LOCATE('quente', 'O sol mais quente') |+---------------------------------+| 5 |+----------------------------------+

Mas se a string for apenas parte da substring, não é uma correspondência:
SELECT LOCATE('hottest', 'The hot sun'); 

Resultado:
+----------------------------------+| LOCATE('mais quente', 'O sol quente') |+---------------------------------+| 0 |+----------------------------------+

Espaços


O caractere de espaço ainda é uma string, então podemos incluir espaços na substring, mesmo que seja o único caractere:
SELECT LOCATE(' ', 'The hot sun'); 

Resultado:
+----------------------------+| LOCATE(' ', 'O sol quente') |+----------------------------+| 4 |+----------------------------+

String vazia


Aqui está o que acontece quando a substring é uma string vazia:
SELECT LOCATE('', 'The hot sun'); 

Resultado:
+---------------------------+| LOCATE('', 'O sol quente') |+---------------------------+| 1 |+---------------------------+

Sem correspondência


Se a substring não for encontrada na string, LOCATE() retorna 0 :
SELECT LOCATE('cold', 'The hot sun'); 

Resultado:
+-------------------------------+| LOCATE('frio', 'O sol quente') |+------------------------------------------+| 0 |+------------------------------------------+

Argumentos nulos


Fornecendo null para qualquer um dos argumentos resulta em null :
SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null); 

Resultado:
+-----------------------------+---------------- -----+| LOCATE(null, 'O sol quente') | LOCATE('quente', null) |+-----------------------------+---------- -----------+| NULO | NULO |+-----------------------------+----------------- ----+

Fornecendo o número errado de argumentos


Chamando LOCATE() com o número errado de argumentos ou sem passar nenhum argumento resulta em um erro:
SELECT LOCATE('hot'); 

Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'LOCATE'