GO IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[ProcesarCadena]') AND type IN (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION dbo.ProcesarCadena; GO CREATE FUNCTION dbo.ProcesarCadena ( @entrada NVARCHAR(255) ) RETURNS NVARCHAR(255) AS BEGIN DECLARE @cadena NVARCHAR(255); DECLARE @numero INT; DECLARE @longitud INT; DECLARE @digito1 INT; DECLARE @digito2 INT; DECLARE @suma INT; DECLARE @resultado NVARCHAR(255); -- Dividir la entrada en cadena y nĂºmero SELECT @cadena = LTRIM(RTRIM(SUBSTRING(@entrada, 1, CHARINDEX('|', @entrada) - 1))), @numero = CONVERT(INT, LTRIM(RTRIM(SUBSTRING(@entrada, CHARINDEX('|', @entrada) + 1, LEN(@entrada))))); SET @longitud = LEN(@cadena); IF @longitud < 4 OR @numero < 10 OR @numero > 99 BEGIN SET @resultado = 'NO SE CUMPLE CON LOS REQUISITOS MINIMOS'; END ELSE BEGIN SET @digito1 = @numero / 10; SET @digito2 = @numero % 10; SET @suma = @digito1 + @digito2; IF @suma % 2 = 0 BEGIN SET @resultado = UPPER(LEFT(@cadena, 1)) + LOWER(SUBSTRING(@cadena, 2, @longitud - 2)) + UPPER(RIGHT(@cadena, 1)); END ELSE BEGIN SET @resultado = LOWER(LEFT(@cadena, 1)) + UPPER(SUBSTRING(@cadena, 2, @longitud - 2)) + LOWER(RIGHT(@cadena, 1)); END END RETURN @resultado; END SELECT dbo.ProcesarCadena('elmejorprofe|35') AS Resultado;