Função para tirar acento no SQL Server

Função para tirar acento no SQL Server

Olá pessoal…

Recentemente precisei criar uma função que retirasse acentos via SQL Server.

Imagina que você disponibiliza um portal para pessoas fazerem consultas, e ao pesquisar sobre árvore, a pessoa pode digitar arvore, Arvore, Árvore, ÁRVORE, etc…

Pensando nisso, preparei uma função simples para o banco de dados, onde é possível retirar esses acentos, e para chamá-la é bem simples, abaixo dois exemplos:

SELECT dbo.fTiraAcento('árvore')

...

SELECT * FROM TABELA WHERE dbo.fTiraAcento(UPPER(CAMPO)) LIKE '%ÁRVORE%')

Abaixo um print de exemplo:

Exemplo de função que retira acento no SQL Server
Exemplo de função que retira acento no SQL Server

E o código fonte criado:

CREATE FUNCTION dbo.fTiraAcento (@texto VARCHAR(250))
RETURNS VARCHAR(250)
AS BEGIN
    DECLARE @resultado VARCHAR(250)

    SET @resultado = @texto

	SET @resultado = REPLACE(@resultado, 'ã', 'a')
	SET @resultado = REPLACE(@resultado, 'á', 'a')
	SET @resultado = REPLACE(@resultado, 'â', 'a')
	SET @resultado = REPLACE(@resultado, 'à', 'a')
	SET @resultado = REPLACE(@resultado, 'ä', 'a')
	SET @resultado = REPLACE(@resultado, 'é', 'e')
	SET @resultado = REPLACE(@resultado, 'è', 'e')
	SET @resultado = REPLACE(@resultado, 'ê', 'e')
	SET @resultado = REPLACE(@resultado, 'ë', 'e')
	SET @resultado = REPLACE(@resultado, 'í', 'i')
	SET @resultado = REPLACE(@resultado, 'ì', 'i')
	SET @resultado = REPLACE(@resultado, 'î', 'i')
	SET @resultado = REPLACE(@resultado, 'ï', 'i')
	SET @resultado = REPLACE(@resultado, 'ó', 'o')
	SET @resultado = REPLACE(@resultado, 'ò', 'o')
	SET @resultado = REPLACE(@resultado, 'õ', 'o')
	SET @resultado = REPLACE(@resultado, 'ô', 'o')
	SET @resultado = REPLACE(@resultado, 'ö', 'o')
	SET @resultado = REPLACE(@resultado, 'ú', 'u')
	SET @resultado = REPLACE(@resultado, 'ù', 'u')
	SET @resultado = REPLACE(@resultado, 'û', 'u')
	SET @resultado = REPLACE(@resultado, 'ü', 'u')
	SET @resultado = REPLACE(@resultado, 'ç', 'c')

	SET @resultado = REPLACE(@resultado, 'Ã', 'A')
	SET @resultado = REPLACE(@resultado, 'Á', 'A')
	SET @resultado = REPLACE(@resultado, 'Â', 'A')
	SET @resultado = REPLACE(@resultado, 'À', 'A')
	SET @resultado = REPLACE(@resultado, 'Ä', 'A')
	SET @resultado = REPLACE(@resultado, 'É', 'E')
	SET @resultado = REPLACE(@resultado, 'È', 'E')
	SET @resultado = REPLACE(@resultado, 'Ê', 'E')
	SET @resultado = REPLACE(@resultado, 'Ë', 'E')
	SET @resultado = REPLACE(@resultado, 'Í', 'I')
	SET @resultado = REPLACE(@resultado, 'Ì', 'I')
	SET @resultado = REPLACE(@resultado, 'Î', 'I')
	SET @resultado = REPLACE(@resultado, 'Ï', 'I')
	SET @resultado = REPLACE(@resultado, 'Ó', 'O')
	SET @resultado = REPLACE(@resultado, 'Ò', 'O')
	SET @resultado = REPLACE(@resultado, 'Õ', 'O')
	SET @resultado = REPLACE(@resultado, 'Ô', 'O')
	SET @resultado = REPLACE(@resultado, 'Ö', 'O')
	SET @resultado = REPLACE(@resultado, 'Ú', 'U')
	SET @resultado = REPLACE(@resultado, 'Ù', 'U')
	SET @resultado = REPLACE(@resultado, 'Û', 'U')
	SET @resultado = REPLACE(@resultado, 'Ü', 'U')
	SET @resultado = REPLACE(@resultado, 'Ç', 'C')

    RETURN @resultado
END

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

2 comentários em “Função para tirar acento no SQL Server

  1. Bom dia!

    Mais fácil do que criar a função é utilizar um collate que não contenha acentos.
    Algo assim
    SELECT * FROM TABELA
    WHERE CAMPO LIKE ‘%ÁRVORE%’ COLLATE SQL_Latin1_General_CP1253_CI_AI

    Ou ainda utilizar o collate na função, em vez de tratar cada caractere individualmente.

Deixe uma resposta

%d blogueiros gostam disto: