Quem aqui nunca perdeu ao menos uma tarde inteira para deixar os dados inputados em uma base mais apresentáveis; na verdade mais padronizados.
Dia desses me deparei com uma situação assim; era preciso que eu padronizasse os nomes dos fulanos e imagina que cada um inseriu da maneira como bem quis e não houve uma regra para formatar os dados lá na interface. Aí lá vai o peão dar enxadada no banco pra cavar essas minhocas.
Pois além da importância da informação é a qualidade da informação e padronizar os dados é sempre bom, economiza tempo de desenvolvimento e melhora a aparência dos relatórios e dados apresentados na interface com o usuário.
Aqui vai um código que fiz e que acho que pode ajudar você a resolver este problema. O que fiz foi um cursor que varre os registros em busca de espaços em branco e com isso coloca o primeiro caractere que vem logo após este espaço em branco ser maiúsculo isso se chama Proper Case. Espero que seja útil.
--Transforma tudo em minúsculo update tmp_limpeza set nome = lower(nome) go --Retira os espaços em branco a esquerda update tmp_limpeza set nome = ltrim(nome) go --Retira os espaços em branco a direita update tmp_limpeza set nome = rtrim(nome) go --A primeira letra de cada um dos nomes como maiúscula update tmp_limpeza set nome = upper(substring(nome, 1, 1)) + substring(nome, 2, len(nome)) --Começa o cursor declare @nome varchar(500) declare @nomenovo varchar(500) declare @letra varchar(1) declare @pilha integer set @pilha = 0 declare cursornome cursor for select nome from tmp_limpeza where nome like '% %' open cursornome fetch next from cursornome into @nome while @@fetch_status = 0 begin set @pilha = 1 set @nomenovo = '' --Varre a string do nome para fazer as substituições while @pilha < len(@nome) + 1 begin set @letra = substring(@nome, @pilha, 1) set @nomenovo = @nomenovo + @letra if (@letra = ' ') begin set @nomenovo = @nomenovo + upper(substring(@nome, @pilha + 1, 1)) set @pilha = @pilha + 1 end set @pilha = @pilha + 1 end --Atualiza o nome na tabela update tmp_limpeza set nome = @nomenovo where nome = @nome fetch next from cursornome into @nome end close cursornome deallocate cursornome



Be the first to start a conversation