Melhora-se colocando o while para contar quantas palavras tem o nome da pessoa.
Vou tentar fazer mais tarde.
declare @valor1 varchar(30) = 'ADVALDO'
declare @valor2 varchar(30) = 'PAIVA'
declare @valor3 varchar(30) = 'MOREIRA'
select len(@valor1) , len(@valor2), len(@valor3)
declare @table table (nome varchar(max))
insert into @table values ('ADVALDO PAIVA MOREIRA')
SELECT LEN
(SUBSTRING(nome -- CAMPO
, 1 -- INICIO
,(SELECT PATINDEX('% %', nome))) -- ESPAÇO
)
FROM @table
update @table
set nome = replace(nome, (CASE WHEN CHARINDEX(' ',nome) > 0
THEN LEFT(nome, CHARINDEX(' ',nome)-1)
ELSE nome END ) , ' '
)
update @table
set nome = replace (nome, ' ','')
SELECT LEN
(SUBSTRING(nome -- CAMPO
, 1 -- INICIO
,(SELECT PATINDEX('% %', nome))) -- ESPAÇO
)
FROM @table
update @table
set nome = replace(nome, (CASE WHEN CHARINDEX(' ',nome) > 0
THEN LEFT(nome, CHARINDEX(' ',nome)-1)
ELSE nome END ) , ' '
)
update @table
set nome = replace (nome, ' ','')
SELECT LEN(nome) FROM @table