No MySQL, o
POSITION()
A função retorna a posição da primeira ocorrência de uma substring dentro da string. Esta função é na verdade um sinônimo para
LOCATE()
, mas com uma sintaxe ligeiramente diferente. O LOCATE()
A função também tem uma funcionalidade extra, na medida em que permite definir uma posição inicial para a sua pesquisa. Sintaxe
A sintaxe básica é assim:
POSITION(substr IN str)
Onde
substr
é a substring e str
é a corda. Exemplo 1 – Uso básico
SELECT POSITION('Cat' IN 'The Cat') Result;
Resultado:
+--------+ | Result | +--------+ | 5 | +--------+
Exemplo 2 – Sensibilidade entre maiúsculas e minúsculas
A
POSITION()
A função é multibyte segura e diferencia maiúsculas de minúsculas somente se pelo menos um argumento for uma string binária. Portanto, o exemplo a seguir não diferencia maiúsculas de minúsculas:
SELECT POSITION('Cat' IN 'The cat') Result;
Resultado:
+--------+ | Result | +--------+ | 5 | +--------+
Exemplo 3 – Sem correspondência
A função retorna
0
se a substring não for encontrada na string:SELECT POSITION('Dog' IN 'The cat') Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Exemplo 4 – Substrings incorporadas
Tenha cuidado ao escolher a substring. Se for parte de outra palavra, você pode obter um falso positivo:
SELECT POSITION('Cat' IN 'Good Catch!') Result;
Resultado:
+--------+ | Result | +--------+ | 6 | +--------+
Se você está apenas procurando por gato , o animal, isso seria um falso positivo.
Exemplo 5 – Somente na primeira ocorrência
Lembre-se, esta função retorna apenas a posição do primeiro ocorrência da substring. Quaisquer ocorrências subsequentes são ignoradas:
SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;
Resultado:
+--------+ | Result | +--------+ | 4 | +--------+
Exemplo 6 – Argumentos NULL
Se algum dos argumentos for
NULL
, o resultado é NULL
:SELECT POSITION('Cat' IN NULL) 'Result 1', POSITION(NULL IN 'The Cat') 'Result 2';
Resultado:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | NULL | NULL | +----------+----------+
Como mencionado, você também pode usar o
LOCATE()
função, que permite definir uma posição inicial para sua pesquisa.