Substring() en SQL Server: Cómo usarla con un ejemplo
⚡ Resumen inteligente
SUBSTRING() en SQL Server, por ejemplotracts es una porción de un carácter, texto o expresión binaria, que devuelve un número fijo de caracteres desde una posición inicial elegida, y se combina naturalmente con CHARINDEX para el análisis basado en delimitadores.
¿Qué es la subcadena()?
SUBSTRING() es una función en SQL que permite al usuario obtener una subcadena de cualquier cadena dada según sea necesario. Ejemplo de SUBSTRING():tracSubstring() es una cadena de una longitud específica, que comienza en una posición determinada dentro de una cadena de entrada. El propósito de SUBSTRING() en SQL es devolver una porción específica de la cadena.
Sintaxis de subcadena()
SUBSTRING(Expression, Starting Position, Total Length)
Aquí:
- La expresión SUBSTRING() en SQL Server Puede ser cualquier carácter, binario, texto o imagen. La expresión es la cadena de origen de la que se obtiene la subcadena.
- La posición inicial determina la posición en la expresión desde donde debe comenzar la nueva subcadena.
- La longitud total es la longitud total esperada de la subcadena resultante de la expresión, comenzando desde la posición inicial.
Reglas para usar SUBSTRING()
- Los tres argumentos son obligatorios en la función SUBSTRING() de MS SQL.
- Si la posición inicial es mayor que el número máximo de caracteres de la expresión, la función SUBSTRING() de SQL Server no devuelve ningún resultado.
- La longitud total puede exceder la longitud máxima de caracteres de la cadena original. En este caso, la subcadena resultante es la cadena completa, desde la posición inicial en la expresión hasta el último carácter de la misma.
El siguiente diagrama ilustra el uso de la función SUBSTRING() en SQL Server:
Ejemplos de subcadenas T-SQL
Suposición: Supongamos que tenemos una tabla llamada 'Guru99' con dos columnas y cuatro filas, como se muestra a continuación. Usaremos este 'GuruTabla '99' en los siguientes ejemplos:
Consulta 1: SUBSTRING() en SQL con una longitud menor que la longitud máxima total de la expresión.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Resultado: El diagrama a continuación muestra la subcadena de la columna 'Tutorial_name' como la columna 'SUB'. La posición inicial es 1 y la longitud es 2, por lo que se devuelven los dos primeros caracteres:
Consulta 2: SUBSTRING() en SQL Server con una longitud mayor que la longitud máxima total de la expresión.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Resultado: El diagrama a continuación muestra la subcadena de la columna 'Tutorial_name' como la columna 'SUB'. Aunque la longitud de la subcadena es mayor que la longitud máxima total de la expresión, no se genera ningún error y la consulta devuelve la cadena completa desde la posición inicial en adelante:
Substring con CHARINDEX en SQL Server
Un uso muy común en el mundo real de SUBSTRING() es paratracTexto que se encuentra antes o después de un delimitador, como el dominio en una dirección de correo electrónico. Por sí sola, la función SUBSTRING() necesita una posición inicial fija, pero la posición de un delimitador varía de una fila a otra. La función CHARINDEX() resuelve esto devolviendo la posición de un carácter dentro de una cadena:
CHARINDEX(substring_to_find, expression [, start_location])
Al anidar CHARINDEX() dentro de SUBSTRING(), la posición inicial se vuelve dinámica. El siguiente ejemplo encuentra la @ símbolo y devuelve todo lo que le sigue. Un variable contiene el valor de la muestra:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Aquí, CHARINDEX('@', @Email) localiza la posición del símbolo @, sumando 1 se mueve más allá de él, y SUBSTRING() luego...tracts los caracteres restantes. Para el valor anterior, la consulta devuelve el dominio guru99.comEste patrón CHARINDEX-plus-SUBSTRING es la forma estándar de analizar cadenas estructuradas en T-SQL.
SUBSTRING frente a LEFT y RIGHT en SQL Server
SQL Server también proporciona las funciones LEFT() y RIGHT() para extraer caracteres del principio o del final de una cadena. Son más cortas de escribir, pero se limitan a los dos extremos. SUBSTRING() es la más flexible, ya que puede comenzar en cualquier posición. La siguiente tabla las compara:
| Función | Argumentos | Extracts de | Subcadena() equivalente |
| IZQUIERDA(expresión, n) | 2 | Inicio de la cadena | SUBSTRING(expresión, 1, n) |
| DERECHA(expresión, n) | 2 | Fin de la cuerda | SUBSTRING(expresión, LEN(expresión) – n + 1, n) |
| SUBSTRING(expresión, inicio, longitud) | 3 | Cualquier posición | No es aplicable |
En resumen, LEFT() y RIGHT() son atajos prácticos para los extremos de una cadena, mientras que SUBSTRING() maneja el caso general, incluyendo caracteres tomados del medio.
Argumentos negativos, cero y nulos en SUBSTRING
Más allá de las reglas básicas, es útil saber cómo se comporta SUBSTRING() en los extremos. Cuando la posición inicial es cero o negativa, SQL Server calcula una longitud efectiva de (inicio + longitud – 1) y comienza a leer desde la posición uno. Cuando algún argumento es NULL, el resultado es NULL. La tabla a continuación, verificada con la documentación oficial SUBSTRING (Transact-SQL) La referencia muestra estos casos:
| Llame hoy al | Resultado | Razón |
| SUBSTRING('Guru99', 1, 4) | Guru | Llamada normal: cuatro caracteres desde la posición uno. |
| SUBSTRING('Guru99', 0, 3) | Gu | Comience por debajo de uno: la longitud efectiva es 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Si la longitud excede la cadena, se devuelve el resto, sin ningún error. |
| SUBSTRING('Guru99', 3, NULO) | NULL | Un argumento NULL hace que todo el resultado sea NULL. |
Conocer estos casos límite evita sorpresas cuando la posición inicial se calcula a partir de otra columna o variable que podría ser cero o NULL.





