MySQL SUBSTRING_INDEX

Haider Ali 20 junio 2023
MySQL SUBSTRING_INDEX

En esta guía, entenderemos el concepto de la función substring_index en MySQL. Este concepto permite al usuario obtener la cadena de su elección de una serie de cadenas diferentes.

Profundicemos y entendamos esta función.

SUBSTRING_INDEX en MySQL

Primero, comprendamos un par de conceptos importantes esenciales para trabajar la función substring_index. Estos son a saber: DELIMITER y CHARINDEX().

Delimiter es un símbolo compuesto que sirve como el punto principal donde queremos que se rompa la cadena. La cadena se romperá en ese punto, y la cadena recuperada será anterior o posterior a ese punto, según nuestra entrada.

Charindex() es una función en MySQL que se usa cuando queremos obtener la posición de una subcadena específica en una cadena y devolver su posición. Sus parámetros incluyen (substring, string).

Código de función Subcadena

El siguiente código muestra el funcionamiento de la función Substring_index. Este código es el equivalente de SQL Server de la función substring_index de MySQL.

El siguiente código debe ejecutarse en el servidor SQL.

CREATE FUNCTION SUB_STRING
(
@STRING VARCHAR(8000),
@DELIMITER VARCHAR(1),
@POSITION INT
)
RETURNS VARCHAR(8000)
AS
BEGIN
IF @POSITION = 0
BEGIN
	RETURN SUBSTRING(@STRING,0,CHARINDEX(@DELIMITER,@STRING))
END
IF @POSITION = 1
BEGIN
	RETURN SUBSTRING(@STRING,CHARINDEX(@DELIMITER,@STRING)+1,LEN(@STRING))
END
RETURN @STRING
END;

Entendamos el código.

Hemos creado una función, a saber, SUB_STRING y dentro de esta función tiene los parámetros @string (cadena desde la cual se obtendrá la subcadena), @delimiter y @position (tiene dos valores 0 o 1).

@Position es un parámetro que, si se establece en 0, comenzará a buscar desde el índice inicial de la cadena hasta el punto delimitador y, si se establece en 1, comenzará a buscar desde el punto 1 adelante del punto delimitador y hasta el último de la cadena.

La cláusula Begin indica el inicio del bloque de código, y la cláusula End indica el final del bloque de código.

En la primera condición if, la posición se establece en 0. En la función subcadena, obtuvimos la cadena a buscar del índice 0, la función Charindex().

Esto devolvería la subcadena del índice 0 al punto delimitador.

Ejemplo 1

Entienda esto con el siguiente ejemplo.

SELECT dbo.SUB_STRING('ahsanali@email.com','@',0)

subcadena 0

Como puede ver, devolvió la subcadena desde el índice 0 y hasta el punto delimitador.

La segunda condición if establece la posición en 1. En la función de subcadena, obtuvimos la función Charindex() con una condición +1 que buscaría la subcadena, que es un índice 1 por delante del punto delimitador y hasta el último de la cadena.

Ejemplo 2

Entendamos más con la ayuda de otro ejemplo.

SELECT dbo.SUB_STRING('ahsanali@email.com','@',1)

subcadena 1

Como puede ver, devolvió la subcadena que era el índice 1 antes del punto delimitador y hasta la última cadena.

Además, otro punto es que si das un valor incorrecto en @posición (0 o 1), devolvería la cadena completa.

SELECT dbo.SUB_STRING('ahsanali@email.com','&',3)

valor incorrecto

Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn