SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Obtenha a posição de um caractere em uma string no SQLite com Instr()


No SQLite, você pode usar o instr() função para retornar a posição de um determinado caractere dentro de uma string.

A função retorna apenas a posição da primeira ocorrência do caractere (se houver).

Se o caractere não for encontrado, ele retornará 0.

Se um dos argumentos for NULL, ele retornará NULL.

Como funciona


O instr() função aceita dois argumentos. O primeiro argumento é a string e o segundo argumento é o caractere que você deseja encontrar nessa string.

Se os argumentos forem ambos BLOBs, ele retornará um bytes a mais do que o número anterior à primeira ocorrência do segundo argumento, ou 0 se não ocorrer em nenhum lugar dentro do primeiro argumento.

A sintaxe fica assim:
inst(X,Y)
  • X é a string
  • Y é o personagem

Exemplo


Aqui está um exemplo para demonstrar.
SELECT instr('Black cat', 'a');

Resultado:
3

Aqui, eu queria a localização da letra a .

Neste caso a letra aparece duas vezes, e instr() retorna o local da primeira ocorrência.

Um exemplo de banco de dados


Neste exemplo, usarei a seguinte tabela:
ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Vou pesquisar o ProductName coluna para uma carta.
SELECT 
  ProductName,
  instr(ProductName, 'd') 
FROM Products;

Resultado:
ProductName    instr(ProductName, 'd')
-------------  -----------------------
Widget Holder  3                      
Blue Widget    8                      
Red Widget     3                      
Green Widget   9                      
Widget Stick   3                      
Foo Cap        0                               

Observe que a última linha não tinha a letra e, portanto, 0 foi retornado para essa linha.

Valores NULOS


Conforme mencionado, se algum dos argumentos for NULL, então NULL será retornado.
SELECT 
  instr(NULL, 'a'),
  instr('Black cat', NULL);

Resultado:
instr(NULL, 'a')  instr('Black cat', NULL)
----------------  ------------------------