sql >> Base de Datos >  >> RDS >> SQLite

Obtenga la posición de un carácter en una cadena en SQLite con Instr()

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 cadena
  • Y 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)
----------------  ------------------------