Buscas no SQLSERVER sem distinção de caracteres com acentuação

por Fernando D'Angelo 2. março 2010 08:26

É comum em sites a existência de busca de conteúdo por palavra-chave.

Neste cenário, muitas pessoas quebram a cabeça para fazer com que a busca por palavras ignore a acentuação, ou seja, se o usuário digitar a palavra sem acentuação e no banco de dados ela estiver com acentuação, o sistema deverá encontrar tal registro. O contrário também deve ser válido.

Ao contrário do que muitos imaginam, a não distinção de caracteres com e sem acentuação é uma configuração do SQLSERVER e não é necessário criar métodos no código do site para isto. Basta para isso alterar o COLLATE dos campos de busca para um COLLATE que não faça essa distinção.

O COLLATE padrão do Português-BR no SQLSERVER 2005 é SQL_Latin1_General_CP1_CI_AS, onde o AS significa "Accent Sensitive", ou seja, Sensível à acentuação. Precisamos então alterar o COLLATE para SQL_Latin1_General_CP1_CI_AI, onde o AI significa "Accent Insensitive", ou seja, insensível à acentuação. Esta alteração basta para que a busca funcione corretamente.

No entanto, para complicar um pouco, a base de dados já está criada e com o COLLATE padrão do servidor de hospedagem, que não permite controle total da base de dados.

Assim sendo, não conseguimos ou é muito trabalhoso alterar o COLLATE da base de dados, da tabela ou da coluna.

Uma solução rápida é alterar alterar o COLLATE do campo na própria sintaxe SQL.

Para fazer uma busca em um banco de dados, com LIKE, sem que o sistema faça distinção entre palavras com e sem acento (ex: procurar por "acustica" e achar "acústica"), faça como no exemplo abaixo. É só inserir o COLLATE abaixo na string SQL.


... WHERE TX_NOME  COLLATE SQL_Latin1_General_CP1_CI_AI LIKE  '%acustica%' ...

 

Abs,

 

Fernando D'Angelo

Tags: , ,

Banco de Dados



Connection Strings

por Thiago Nishio 11. janeiro 2010 17:30

Fala galera!

Um dia destes precisei da Connection String para acessar o Oracle 10g a partir de uma pequena aplicação ASP.NET que estava desenvolvendo. Uma boa referência na Web sobre Connection Strings é o site http://www.connectionstrings.com, onde há uma lista com as Connection Strings para acesso aos principais bancos de dados do mercado e também para acesso a arquivos, além de explicação sobre o assunto e regras gerais de formatação destas Connection Strings.

Até a próxima!

Tags:

Banco de Dados




Calendário

<<  março 2010  >>
seteququsedo
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

Ver os posts em um calendário maior

Assine Nossa Newsletter

Quero ser notificado quando um novo Post for publicado