Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como a função POSITION() funciona no MySQL


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.