Usuário com melhor resposta
Descrição iguais

Pergunta
-
Respostas
-
Deleted
- Marcado como Resposta Ronnie Von sexta-feira, 2 de agosto de 2013 19:55
Todas as Respostas
-
Ronnie, boa tarde.
Se vc estiver utilizando uma collation to tipo CI (case insensitive), vc poderá simplesmente agrupar o seu dado:
select produto, max(codigo) from tbproduto group by produto having count(*) >1
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
- Sugerido como Resposta Alexandre Matayosi sexta-feira, 26 de julho de 2013 18:24
-
-
Eu complementaria fazendo um replace também nos espaços, para utilizar a SOUNDEX com palavras compostas.
http://adjuniordba.wordpress.com/2012/12/11/soundex-com-palavras-compostas/
Um exemplo com Soundex simples:
declare @tbproduto table (nome varchar(30)) insert into @tbproduto values ('cimento') insert into @tbproduto values ('CIMENTO') insert into @tbproduto values ('CIMENT') insert into @tbproduto values ('TIJOLO') insert into @tbproduto values ('tijolo') insert into @tbproduto values ('TIJOL') select SOUNDEX(nome), nome from @tbproduto select COUNT(*), SOUNDEX(nome) from @tbproduto group by SOUNDEX(nome)
-
-
-
-
Valeu pela dica, vou verificar novamente, veja o que estou executando;
create function Normaliza (@pTexto varchar(2000))
returns varchar(2000)
begin
declare @xTexto varchar(2000);
-- remove espaços no início e no final do texto
set @xTexto = ltrim(rtrim(@pTexto));
-- remove espaços repetidos no meio do texto
while charindex(' ',@xTexto) > 0
set @xTexto = replace(@xTexto, ' ', ' ');
-- retira acentuação e transforma em maiúscula
set @xTexto = upper(@xTexto collate sql_latin1_general_cp1251_ci_as);
-- fui!
return @xTexto;
end;with
REPETIDO as (
SELECT dbo.Normaliza(Nome) as NomeN
from TPRODUTO
group by dbo.Normaliza(Nome)
having count(*)>1
)
SELECT R.NomeN as [Nome normalizado], T.Codigo, '>'+T.Nome+'<' as [Nome original]
from TPRODUTO as T
inner join REPETIDO as R on dbo.Normaliza(T.Nome)=R.NomeN
order by R.NomeN, Codigo; -
Deleted
- Marcado como Resposta Ronnie Von sexta-feira, 2 de agosto de 2013 19:55
-