HOWTO · MySQL
MySQL SUBSTRING_INDEX
En esta guía, entenderemos el concepto de la función substring_index en MySQL.
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)
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)
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)