Usuário com melhor resposta
Cadastro duplicado

Pergunta
-
Preciso checar o lancamento duplicado de nomes. Qdo apresentam documento eu consigo gerenciar isso mas muitas vezes eu so tenho o nome (que pode ser digitado de qq jeito), data de nascimento e nome da mae.
Queria que o sistema conseguisse identificar como sendo o mesmo nome o "Jose Matos" e "Jose Mattos", ou qdo coloca um espaco a mais entre os nomes ou qdo se acrescenta um sobrenome (ex: "Maria da Silva" e "Maria da Silva de Oliveira").
Eu tava vendo o Soundex mas nesse caso nao deu muito certo. Sera que existe alguma funcao no SQL que possa fazer isso? Ou alguma dica pra montar uma trigger ?
Obrigada
Autor- Tipo Alterado Gustavo Maia Aguiar terça-feira, 26 de outubro de 2010 11:09 É uma dúvida e não uma discussão
Respostas
-
Autor,
Tem uma forma de você resolver seu problema usando o Full Text. Segue abaixo um exemplo para você adaptar à sua necessidade:
CREATE TABLE AAA (A INT PRIMARY KEY IDENTITY(1,1), B VARCHAR(100))
GO
EXEC SP_FULLTEXT_DATABASE 'ENABLE'
GO
CREATE UNIQUE INDEX LXAAA ON AAA(A)
GO
EXEC SP_FULLTEXT_CATALOG 'TESTE', 'CREATE'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'CREATE', 'TESTE', 'LXAAA'
GO
EXEC SP_FULLTEXT_COLUMN 'AAA', 'B', 'ADD'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_FULL'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_CHANGE_TRACKING'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_BACKGROUND_UPDATEINDEX'
GOINSERT INTO AAA VALUES ('MARIA DA SILVA')
INSERT INTO AAA VALUES ('MARIA DA SILVA')
INSERT INTO AAA VALUES ('JOSE DE MATTOS')
INSERT INTO AAA VALUES ('JOSE DE MATOS')Exemplo de execução: SELECT * FROM AAA WHERE FREETEXT (B, 'JOSE DE MATOS')
Abraço,
Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com [Se o post foi útil, não esqueça de marcá-lo. Obrigado!!!]- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 26 de outubro de 2010 11:09
- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44
-
Autor,
Concordo com o amigo Marco... o Fulltext deverá te ajudar....
este artigo deverá te ajudar
http://www.developer.com/db/article.php/3446891/Understanding-SQL-Server-Full-Text-Indexing.htm
Att,
Marcelo Fernandes
Não Perca o Worldwide Online TechDay 2010 Um evento gratuito com grandes personalidades (Buck Woody, Chad Miller, Steve Jones, Fabricio Catae e muito mais...Eu vou falar sobre particionamento de tabelas registre-se
Acesse o site do evento http://www.online.techday.net.br
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 26 de outubro de 2010 11:09
- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44
-
Faça uma verificação, por favor. Há um tempo atras tive um problema com full text que era problema de configuração do perfil da conta de serviço.
Nos serviços do windows localize os serviços: SQL Server e o SQL Full Text. Vá nas propriedades dos dois. Verifique na aba "Logon" se a forma de logon dos dois está a mesma. Tive problemas com isso uma vez, onde deixando as duas iguais resolveu.
Att.,
Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44
Todas as Respostas
-
Autor,
Tem uma forma de você resolver seu problema usando o Full Text. Segue abaixo um exemplo para você adaptar à sua necessidade:
CREATE TABLE AAA (A INT PRIMARY KEY IDENTITY(1,1), B VARCHAR(100))
GO
EXEC SP_FULLTEXT_DATABASE 'ENABLE'
GO
CREATE UNIQUE INDEX LXAAA ON AAA(A)
GO
EXEC SP_FULLTEXT_CATALOG 'TESTE', 'CREATE'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'CREATE', 'TESTE', 'LXAAA'
GO
EXEC SP_FULLTEXT_COLUMN 'AAA', 'B', 'ADD'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_FULL'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_CHANGE_TRACKING'
GO
EXEC SP_FULLTEXT_TABLE 'AAA', 'START_BACKGROUND_UPDATEINDEX'
GOINSERT INTO AAA VALUES ('MARIA DA SILVA')
INSERT INTO AAA VALUES ('MARIA DA SILVA')
INSERT INTO AAA VALUES ('JOSE DE MATTOS')
INSERT INTO AAA VALUES ('JOSE DE MATOS')Exemplo de execução: SELECT * FROM AAA WHERE FREETEXT (B, 'JOSE DE MATOS')
Abraço,
Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com [Se o post foi útil, não esqueça de marcá-lo. Obrigado!!!]- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 26 de outubro de 2010 11:09
- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44
-
Autor,
Concordo com o amigo Marco... o Fulltext deverá te ajudar....
este artigo deverá te ajudar
http://www.developer.com/db/article.php/3446891/Understanding-SQL-Server-Full-Text-Indexing.htm
Att,
Marcelo Fernandes
Não Perca o Worldwide Online TechDay 2010 Um evento gratuito com grandes personalidades (Buck Woody, Chad Miller, Steve Jones, Fabricio Catae e muito mais...Eu vou falar sobre particionamento de tabelas registre-se
Acesse o site do evento http://www.online.techday.net.br
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 26 de outubro de 2010 11:09
- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44
-
-
Faça uma verificação, por favor. Há um tempo atras tive um problema com full text que era problema de configuração do perfil da conta de serviço.
Nos serviços do windows localize os serviços: SQL Server e o SQL Full Text. Vá nas propriedades dos dois. Verifique na aba "Logon" se a forma de logon dos dois está a mesma. Tive problemas com isso uma vez, onde deixando as duas iguais resolveu.
Att.,
Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.- Marcado como Resposta Eder Costa quarta-feira, 15 de dezembro de 2010 17:44