No MariaDB,
POSITION()
é uma função de string interna que retorna a posição da primeira ocorrência de uma substring dentro de outra string. Faz parte do ODBC 3.0. POSITION(substr IN str)
é um sinônimo para LOCATE(substr,str)
. POSITION()
também é semelhante ao INSTR()
função, exceto que POSITION()
usa o IN
sintaxe e que a ordem dos argumentos é invertida entre essas duas funções. Sintaxe
A sintaxe fica assim:
POSITION(substr IN str)
Onde
str
é a string e substr
é a substring para a qual retornar a posição. Exemplo
Segue um exemplo básico:
SELECT POSITION('cute' IN 'My cute dog');
Resultado:
+-----------------------------------+| POSITION('cute' IN 'My cute dog') |+-----------------------------------+ | 4 |+-----------------------------------+
Sensibilidade de maiúsculas e minúsculas
POSITION()
executa uma pesquisa que não diferencia maiúsculas de minúsculas:SELECT POSITION('CUTE' IN 'My cute dog');
Resultado:
+-----------------------------------+| POSITION('CUTE' IN 'My cute dog') |+-----------------------------------+ | 4 |+-----------------------------------+
Várias ocorrências
Se a substring ocorrer mais de uma vez, apenas a posição da primeira (da posição inicial) é retornada:
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');
Resultado:
+---------------------------------------------- ----+| POSITION('cute' IN 'Meu cachorro fofo é TÃO fofo!') |+-------------------------------- ------------------+| 4 |+---------------------------------------------------------- ---+
Correspondência Parcial
Se a substring fizer parte de uma palavra maior, ainda será uma correspondência:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Resultado:
+---------------------------------------------+ | POSITION('cachorro' IN 'Meu cachorrinho é TÃO fofo!') |+--------------------------------- ------------+| 4 |+---------------------------------------------+
Mas se a string for apenas parte da substring, não é uma correspondência:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Resultado:
+---------------------------------------------+ | POSITION('cachorrinho' IN 'Meu cachorro é TÃO fofo!') |+--------------------------------- ------------+| 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 POSITION(' ' IN 'My dog');
Resultado:
+---------------------------+| POSITION(' ' EM 'Meu cachorro') |+---------------------------+| 3 |+---------------------------+String vazia
Aqui está o que acontece quando a substring é uma string vazia:
SELECT POSITION('' IN 'My dog');
Resultado:
+--------------------------+| POSITION('' IN 'Meu cachorro') |+--------------------------+| 1 |+--------------------------+Sem correspondência
Se a substring não for encontrada na string,POSITION()
retorna0
:
SELECT position('cat' IN 'My dog');
Resultado:
+-----------------------------+| position('gato' IN 'Meu cachorro') |+----------------------------+| 0 |+-----------------------------+Argumentos nulos
Fornecendonull
para qualquer um dos argumentos resulta emnull
:
SELECT POSITION(null IN 'My dog'), POSITION('dog' IN null);
Resultado:
+----------------------------+----------------- --------+| POSITION(null IN 'Meu cachorro') | POSITION('cão' IN null) |+----------------------------+----------- --------------+| NULO | NULL |+----------------------------+------------------ -------+Fornecendo o número errado de argumentos
ChamandoPOSITION()
com o número errado de argumentos ou sem passar nenhum argumento resulta em um erro:
SELECT POSITION('dog');
Resultado:
ERRO 1064 (42000):Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MariaDB para a sintaxe correta para usar perto de ')' na linha 1