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'