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 stringY
é 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) ---------------- ------------------------