O MySQL tem várias funções de string que retornam a posição de uma substring dentro de uma string. Mais especificamente, eles retornam a posição da primeira ocorrência dentro da string (ou a primeira ocorrência após um determinado ponto de partida).
As funções a que me refiro são as seguintes:
INSTR()LOCATE()POSITION()
Abaixo está uma visão geral de cada um.
INSTR()
O
INSTR() A função retorna a primeira ocorrência de uma substring dentro de uma string. Aqui está a sintaxe:
INSTR(str,substr)
Onde
str é a string que você deseja pesquisar e substr é a substring que você está procurando. Exemplo
SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result; Resultado:
+--------+ | Result | +--------+ | 10 | +--------+
Neste caso, a string
dogs começa na posição 10. Se a substring não for encontrada, um resultado de
0 é retornado:SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result; Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
LOCATE()
O
LOCATE() a função funciona de maneira semelhante, exceto por algumas diferenças; os argumentos estão em uma ordem diferente e você pode fornecer um terceiro parâmetro opcional para indicar onde iniciar a pesquisa. Portanto, você pode usá-lo de uma das seguintes maneiras:
LOCATE(substr,str) LOCATE(substr,str,pos)
A primeira sintaxe é como o
INTSR() sintaxe, exceto que str e substr são trocados. A segunda sintaxe adiciona o opcional
pos argumento, que permite especificar uma posição para iniciar a pesquisa. Exemplo da primeira sintaxe
Aqui está um exemplo usando a primeira sintaxe:
SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result; Resultado:
+--------+ | Result | +--------+ | 10 | +--------+
Exemplo de segunda sintaxe
Aqui está um exemplo em que especificamos uma posição inicial para iniciar a pesquisa:
SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result; Resultado:
+--------+ | Result | +--------+ | 7 | +--------+
Podemos ver que a string
cat pode ser encontrado na posição 1, mas especificamos 6 como a posição inicial. Portanto, a posição da próxima ocorrência dessa string foi a que foi retornada. Assim como o
INSTR() função, se a substring não for encontrada, 0 é devolvido. POSIÇÃO()
A
POSITION() função é um sinônimo para LOCATE() , mas com uma sintaxe ligeiramente diferente. Aqui está a sintaxe:
POSITION(substr IN str)
Este é um sinônimo para o seguinte:
LOCATE(substr,str)
Assim, poderíamos reescrever um dos exemplos anteriores da seguinte forma:
SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result; Resultado:
+--------+ | Result | +--------+ | 10 | +--------+