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:
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.
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.
Bom dia Emerson.
Obrigado pela contribuição jovem.
Um grande abraço.
otimo post, funcionou perfeitamente.
Opa, obrigado pelo feedback Neilton.