- 1 1. ¿Qué es la función SUBSTRING?
- 2 2. Uso básico de la función SUBSTRING
- 3 3. Aplicaciones prácticas de la función SUBSTRING
- 4 4. Comparación con otras funciones de cadena
- 5 5. Uso avanzado y optimización de la función SUBSTRING
- 6 6. Ejemplos y buenas prácticas para la función SUBSTRING
- 7 7. Manejo de errores y diferencias entre versiones
1. ¿Qué es la función SUBSTRING?
La función SUBSTRING es una función importante de MySQL que se utiliza para extraer una subcadena de una cadena. Con esta función, puedes obtener solo la parte que necesitas de los datos almacenados en una base de datos. Por ejemplo, es útil cuando deseas extraer la parte del dominio de la dirección de correo electrónico de un usuario, o recuperar una sección específica de un código de producto.
1.1 Sintaxis básica
La sintaxis básica de la función SUBSTRING es la siguiente:
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str: La cadena de la cual extraer.pos: La posición inicial (comienza en 1).len: El número de caracteres a extraer (opcional).
Si pos es un valor positivo, MySQL cuenta hacia adelante desde el comienzo de la cadena. Si es negativo, MySQL cuenta hacia atrás desde el final de la cadena. Si se omite len, MySQL extrae desde la posición especificada hasta el final de la cadena.
1.2 Casos de uso de la función SUBSTRING
Esta función se utiliza para formatear datos de cadena y extraer partes específicas, facilitando la búsqueda y el procesamiento de información de manera eficiente en una base de datos.
2. Uso básico de la función SUBSTRING
Para comprender los conceptos básicos, veamos algunos ejemplos sencillos.
2.1 Extrayendo una parte de una cadena
La siguiente consulta extrae 6 caracteres a partir del tercer carácter de la cadena “Hello, World!”.
SELECT SUBSTRING('Hello, World!', 3, 6);
El resultado es "llo, W". Como pos es 3, la extracción comienza en el tercer carácter, y como len es 6, se extraen 6 caracteres.
2.2 Omitiendo el parámetro de longitud
Si omites len, MySQL extrae desde la posición especificada hasta el final de la cadena.
SELECT SUBSTRING('Hello, World!', 8);
El resultado es "World!", que recupera todo a partir del octavo carácter hasta el final.
2.3 Usando una posición negativa
Si utilizas un valor negativo, puedes especificar la posición desde el final de la cadena.
SELECT SUBSTRING('Hello, World!', -5);
Esta consulta devuelve "orld!", extrayendo los últimos 5 caracteres.
3. Aplicaciones prácticas de la función SUBSTRING
La función SUBSTRING se usa frecuentemente en operaciones de datos del mundo real. Aquí tienes algunos ejemplos prácticos.
3.1 Extrayendo el dominio de una dirección de correo electrónico
Combinando SUBSTRING con LOCATE, puedes extraer la parte del dominio de una dirección de correo electrónico.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
Esta consulta extrae la cadena después del “@” y devuelve solo la parte del dominio.
3.2 Extrayendo una parte de un código de producto
Este ejemplo extrae una sección específica de un código de producto.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
En esta consulta, se extraen 4 caracteres a partir del quinto carácter del código de producto y se muestran como una nueva columna llamada product_id.
3.3 Usándolo en una subconsulta
Combinándola con una subconsulta, puedes extraer datos bajo condiciones más complejas.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Esta consulta extrae los primeros 10 caracteres de description de los productos donde category es ‘Electronics’.

4. Comparación con otras funciones de cadena
Otras funciones que pueden usarse con propósitos similares a SUBSTRING incluyen LEFT, RIGHT y SUBSTR.
4.1 Funciones LEFT y RIGHT
LEFT(str, len): Obtiene el número especificado de caracteres desde el inicio de la cadena.RIGHT(str, len): Obtiene el número especificado de caracteres desde el final de la cadena.SELECT LEFT('Hello, World!', 5); -- "Hello" SELECT RIGHT('Hello, World!', 6); -- "World!"
Estas funciones son convenientes cuando deseas extraer una subcadena desde el principio o el final de una cadena.
4.2 Función SUBSTR
SUBSTR es un alias de SUBSTRING, por lo que puede usarse de la misma manera.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Esta consulta devuelve "World!", al igual que SUBSTRING.
5. Uso avanzado y optimización de la función SUBSTRING
Esta sección explica usos más avanzados y técnicas de optimización.
5.1 Optimización del rendimiento
Usar SUBSTRING en conjuntos de datos grandes puede afectar el rendimiento. Si es necesario, crea índices y revisa el plan de ejecución de la consulta. Además, si extraes con frecuencia la misma subcadena, considera almacenar en caché el resultado.
5.2 Usándolo en una cláusula WHERE
Puedes usar SUBSTRING en una cláusula WHERE para filtrar registros basados en una condición de subcadena.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Esta consulta busca productos donde los primeros 3 caracteres de product_code son ‘ABC’.
6. Ejemplos y buenas prácticas para la función SUBSTRING
A continuación se presentan ejemplos prácticos del uso de SUBSTRING y buenas prácticas para el trabajo real.
6.1 Código de ejemplo
El siguiente ejemplo divide el nombre completo de un cliente en nombre y apellido.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
En esta consulta, el nombre y el apellido se extraen de un nombre completo separado por un espacio.
6.2 Buenas prácticas
- Extrae solo lo que necesitas: Mantén la longitud de la subcadena lo más pequeña posible para reducir el impacto en el rendimiento.
- Presta atención a los tipos de datos: Si aplicas
SUBSTRINGa datos numéricos, puede que necesites convertirlos explícitamente a cadena. - Considera el uso de índices: Al usar
SUBSTRINGen una cláusulaWHERE, los índices pueden no utilizarse de manera eficaz, por lo que debes vigilar cuidadosamente el rendimiento de la consulta.
7. Manejo de errores y diferencias entre versiones
Esta sección cubre el manejo de errores al usar SUBSTRING y las diferencias entre versiones de MySQL.
7.1 Manejo de errores
Si la posición especificada está fuera del rango de la cadena, SUBSTRING devuelve una cadena vacía. Dado que esto no es un error, se recomienda agregar lógica para validar el resultado con antelación si es necesario.
7.2 Diferencias entre versiones
Según la versión de MySQL, el comportamiento de la función SUBSTRING puede variar. Por ejemplo, algunas versiones antiguas pueden manejar los caracteres multibyte de forma distinta. Verifica la compatibilidad entre versiones y aplica las medidas apropiadas cuando sea necesario.


