Skip to content

Instantly share code, notes, and snippets.

@ebenito
Last active May 17, 2021 07:47
Show Gist options
  • Save ebenito/8ba3cf0864ce31e5e0802cd1e5a25d56 to your computer and use it in GitHub Desktop.
Save ebenito/8ba3cf0864ce31e5e0802cd1e5a25d56 to your computer and use it in GitHub Desktop.
TSQL - Separar nombre y apellidos 1 y 2
CREATE FUNCTION [dbo].[fnGetSegunoEspacioFinal](@NombreCompleto as varchar(255))
RETURNS int
AS
BEGIN
DECLARE @PosiSegunoEspacioFinal AS int
SET @PosiSegunoEspacioFinal = CHARINDEX(' ', @NombreCompleto, CHARINDEX(' ', @NombreCompleto) + 1) + 1
RETURN @PosiSegunoEspacioFinal --La idea es marcar de forma generico el inicio de los apellidos en una cadena con el nombre completo
/* TEST
DECLARE @Nombre varchar(150)
DECLARE @CountSpaces int
SET @Nombre = 'Jose Juan Pérez de Díez' -- 'Juan Pérez'
SET @CountSpaces = DATALENGTH(@Nombre)-LEN(REPLACE(@Nombre,' ', '')) --Cuenta espacios
IF @CountSpaces > 1
BEGIN
print [dbo].[fnDameSegunoEspacioFinal](@Nombre)
print Substring(@Nombre,[dbo].[fnDameSegunoEspacioFinal](@Nombre), len(@Nombre)) -- Apellidos
print Substring(@Nombre, 1, [dbo].[fnDameSegunoEspacioFinal](@Nombre)-2) --Nombre
print Substring(@Nombre,[dbo].[fnDameSegunoEspacioFinal](@Nombre), CHARINDEX(' ', @Nombre)) -- Apellido 1
print substring(Substring(@Nombre,[dbo].[fnDameSegunoEspacioFinal](@Nombre), len(@Nombre)), CHARINDEX(' ', Substring(@Nombre,[dbo].[fnDameSegunoEspacioFinal](@Nombre), len(@Nombre))) +1, len(@Nombre)) -- Apellido 2
print substring('Pérez de Díez', CHARINDEX(' ', 'Pérez de Díez') +1, len(@Nombre)) -- Apellido 2
END
ELSE
BEGIN
print substring(@Nombre, 1, CHARINDEX(' ', @Nombre) -1) -- Nombre
print substring(@Nombre, CHARINDEX(' ', @Nombre) +1, len(@Nombre)) -- Apellido
END
*/
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment