En SQLite, puede usar instr()
función para devolver la posición de un carácter dado dentro de una cadena.
La función solo devuelve la posición de la primera aparición del carácter (si corresponde).
Si no se encuentra el carácter, devuelve 0.
Si cualquiera de los argumentos es NULL, entonces devuelve NULL.
Cómo funciona
El instr()
La función acepta dos argumentos. El primer argumento es la cadena y el segundo argumento es el carácter que desea encontrar dentro de esa cadena.
Si ambos argumentos son BLOB, devuelve uno más que el número de bytes anterior a la primera aparición del segundo argumento, o 0 si no aparece en ningún lugar dentro del primer argumento.
La sintaxis es así:
inst(X,Y)
X
es la cadenaY
es el personaje
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT instr('Black cat', 'a');
Resultado:
3
Aquí, quería la ubicación de la letra a .
En este caso, la letra aparece dos veces y instr()
devuelve la ubicación de la primera aparición.
Un ejemplo de base de datos
En este ejemplo, usaré la siguiente tabla:
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
Voy a buscar el ProductName columna para una letra.
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
Tenga en cuenta que la última fila no tenía la letra, por lo que 0 fue devuelto para esa fila.
Valores NULOS
Como se mencionó, si alguno de los argumentos es NULL, se devuelve NULL.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Resultado:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------