Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Función MySQL INSTR()

La función `INSTR()` de MySQL devuelve la posición de la primera aparición de una subcadena dentro de una cadena. Se suele utilizar para localizar subcadenas en campos de texto más grandes.

Utilización

La función `INSTR()` se utiliza cuando necesitas determinar la posición de una subcadena dentro de otra cadena. Ayuda en tareas como validar la entrada, analizar cadenas o filtrar datos basándose en la presencia de determinadas subcadenas.

sql
INSTR(string, substring)

En esta sintaxis, `cadena` es el texto principal donde buscas `subcadena`, y la función devuelve la posición (índice basado en 1) de la primera aparición.

Ejemplos

1. Uso básico

sql
SELECT INSTR('Hello World', 'World') AS position;

En este ejemplo, `INSTR()` devuelve `7` porque "Mundo" empieza en la 7ª posición de "Hola Mundo".

2. Sensibilidad a las mayúsculas y minúsculas

sql
SELECT INSTR('Database Management Systems', 'manage') AS position;

Esto devolverá `0` porque `INSTR()` distingue entre mayúsculas y minúsculas y la subcadena "gestionar" no coincide exactamente.

3. Uso en la cláusula WHERE

sql
SELECT title
FROM books
WHERE INSTR(title, 'SQL') > 0;

Esta consulta recupera títulos de libros que contienen la subcadena "SQL", ya que `INSTR()` devuelve un valor positivo si se encuentra la subcadena.

Consejos y buenas prácticas

  • Ten en cuenta las mayúsculas y minúsculas. `INSTR()` distingue entre mayúsculas y minúsculas; convierte las cadenas a un caso uniforme utilizando `LOWER()` o `UPPER()` si es necesario.
  • Utilízalo con cuidado en grandes conjuntos de datos. El uso frecuente de `INSTR()` en campos de texto grandes puede afectar al rendimiento; considera la posibilidad de indexar o limitar el conjunto de datos. Para mejorar el rendimiento, especialmente en las búsquedas de textos grandes, considera la posibilidad de utilizar índices de texto completo.
  • Comprueba si el resultado es cero. Un resultado `0` indica que no se ha encontrado la subcadena; utilízalo para manejar la lógica condicional en las consultas.
  • Combínalo con funciones de cadena. Utiliza `INSTR()` en combinación con `SUBSTRING()` o `REPLACE()` para tareas de manipulación de cadenas.
  • Maneja las subcadenas vacías. Si la subcadena está vacía, `INSTR()devuelve `1`, lo que puede no ser intuitivo. Prepárate para manejar este escenario en tus consultas.
  • Compáralo con `LOCATE()`. La función `INSTR()` es similar a `LOCATE()`, pero difieren en el orden de los parámetros. Mientras que `INSTR()` toma `cadena` y luego `subcadena`, `LOCATE()` acepta `subcadena` antes que `cadena`. Elige la función que se ajuste a tus preferencias o al código base existente.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis