MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como POSITION() funciona no MariaDB


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() retorna 0 :
SELECT position('cat' IN 'My dog'); 

Resultado:
+-----------------------------+| position('gato' IN 'Meu cachorro') |+----------------------------+| 0 |+-----------------------------+

Argumentos nulos


Fornecendo null para qualquer um dos argumentos resulta em null :
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


Chamando POSITION() 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