Primero necesitas una funcion para hacer el split por el delimitador de tu texto que en tu ejemplo de "Juan Perez" es el espacio en blanco.
Código SQL:
Ver originalCREATE FUNCTION dbo.fnSplit(
@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
) RETURNS @List TABLE (rowID INT IDENTITY(1,1), item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
GO
-- Ejemplo
DECLARE @Valor VARCHAR(1000)
DECLARE @Delimitador VARCHAR(10)
SET @Valor = ''
SET @Delimitador = ' '
SELECT @Valor = @Valor + item + @Delimitador FROM fnSplit('Juan Perez', @Delimitador) ORDER BY rowId DESC
SELECT SUBSTRING(@Valor,1, LEN(@Valor) +1) CadenaInversa
Segundo, tienes la generacion del numero random de 7 cifras...
Código SQL:
Ver original--Numero Random
DECLARE @Random INT;
DECLARE @UPPER INT;
DECLARE @LOWER INT;
DECLARE @Formato VARCHAR(7);
DECLARE @Numero VARCHAR(7);
SET @LOWER = 1 -- Numero mas chico
SET @UPPER = 9999999 -- Numero mas grande
SET @Formato = '0000000' -- Formato
SET @Random = ROUND(((@UPPER - @LOWER -1) * RAND() + @LOWER), 0)
SET @Numero = RIGHT( @Formato + CAST(@Random AS VARCHAR(7)), 7)
SELECT @Numero Random
Suerte