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.

  • ✂️ Propósito: La función SUBSTRING() devuelve una porción específica de una cadena, dada la expresión de origen, una posición inicial y una longitud.
  • 🔢 Tres argumentos: La expresión, la posición inicial y la longitud total son obligatorias en la función SUBSTRING() de SQL Server.
  • 📍 Índice basado en uno: La posición inicial se basa en 1, por lo que el primer carácter cuenta como posición uno, lo que evita errores por desfase de uno.
  • 🔎 Con CHARINDEX: Combinar SUBSTRING() con CHARINDEX() localiza un delimitador y extraces el texto anterior o posterior.
  • ↔️ Contra IZQUIERDA y DERECHA: A diferencia de LEFT() y RIGHT(), SUBSTRING() extraccaracteres ts desde cualquier posición, no solo los extremos.
  • ⚠️ Casos extremos: Una longitud NULL devuelve NULL, mientras que una longitud que excede la cadena devuelve el resto sin generar un error.

Función SUBSTRING() en SQL Server con ejemplos en T-SQL.

¿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:

Diagrama que muestra cómo funciona SUBSTRING()traccaracteres ts desde una posición inicial para una longitud dada

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:

GuruTabla de ejemplo 99 con las columnas Tutorial_ID y Tutorial_name utilizadas en los ejemplos de SUBSTRING.

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:

Cuadrícula de resultados que devuelve los dos primeros caracteres de Tutorial_name como columna SUB.

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:

Cuadrícula de resultados que devuelve el resto de Tutorial_name cuando la longitud solicitada excede la cadena.

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.

Preguntas Frecuentes

SQL Server utiliza SUBSTRING(); SUBSTR() es el nombre utilizado en Oracle y MySQLAmbas devuelven una parte de una cadena, pero SUBSTRING() es la función estándar de Transact-SQL, por lo que SUBSTR() no se ejecutará en SQL Server.

Sí. Dado que SUBSTRING() devuelve un valor, puede aparecer en las cláusulas WHERE, SELECT y ORDER BY. El filtrado mediante SUBSTRING() generalmente evita la búsqueda en el índice, por lo que el patrón LIKE suele ser más rápido para búsquedas por prefijo.

Sí, pero SQL Server primero convierte el valor a una cadena, ya sea implícitamente o mediante CAST o CONVERT. La posición inicial y la longitud cuentan caracteres, no dígitos ni partes de la fecha, así que formatee el valor con cuidado.

La forma de tres argumentos se comporta de manera similar, pero los detalles difieren. MySQL También permite SUBSTR() y posiciones iniciales negativas, mientras que SQL Server utiliza SUBSTRING() y trata un inicio inferior a uno utilizando una regla de longitud efectiva.

La función SUBSTRING() devuelve la misma categoría que su entrada: varchar para datos de caracteres, nvarchar para texto Unicode y varbinary para expresiones binarias. La longitud depende de la subcadena solicitada, no de toda la columna de origen.

Envuelvaping Una columna en SUBSTRING() dentro de una cláusula WHERE hace que el predicado no sea indexable, por lo que SQL Server no puede usar una búsqueda de índice en esa columna. Para coincidencias de prefijo, un patrón LIKE 'valor%' suele ofrecer mejores resultados.

Sí. Copiloto de GitHub Puede generar expresiones SUBSTRING() y CHARINDEX(), incluyendo análisis basado en delimitadores, a partir de una solicitud en lenguaje natural. Siempre verifique la posición inicial, la longitud y la indexación basada en 1 antes de ejecutar la consulta.

Los asistentes de IA y aprendizaje automático traducen reglas en lenguaje natural a combinaciones de SUBSTRING(), CHARINDEX(), LEFT() y RIGHT(), sugieren cálculos de longitud e indican errores de un solo dígito. El desarrollador revisa cada sugerencia para comprobar su corrección antes de implementarla.

Resumir este post con: