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()
retorna0
:
SELECT LOCATE('cold', 'The hot sun');
Resultado:
+-------------------------------+| LOCATE('frio', 'O sol quente') |+------------------------------------------+| 0 |+------------------------------------------+Argumentos nulos
Fornecendonull
para qualquer um dos argumentos resulta emnull
:
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
ChamandoLOCATE()
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'