Removendo e Bloquear o uso Caracteres especiais

24/10/2014

0

Ola Galere,

Gostaria de ajuda de vcs com relacao a um problema que tenho aqui na empresa.

Gosataria de saber se existe alguma forma pratica de removermos os caracteres especiais no banco, alguma funcao ou comando especifico.

E tambem se eh possivel fazer algum tipo de bloqueio para o uso destes caracteres.

Estou fazendo algumas pesquisas na net tbm, se alguem tiver ou souber e puder me ajudar, fico "devendo". rssr

Desde ja agradeco.

Abraco.
Alex Lekao

Alex Lekao

Responder

Post mais votado

07/11/2014

COm base na tabela que te envie, basta incluir os que deseja.

ALTER FUNCTION [dbo].[FN_REMOVE_CHAR_ESPECIAL] (@TXTINICIAL VARCHAR(MAX)) RETURNS VARCHAR(MAX) 
       AS 
BEGIN
   DECLARE @TXTSEQUENCIA VARCHAR(MAX) 

/*
CARACTERES MINUSCULOS
*/
   SET @TXTSEQUENCIA = REPLACE(@TXTINICIAL   COLLATE Latin1_General_BIN,char(225),'a') --SELECT 'á',ASCII('á'); --225 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(224),'a') --SELECT 'à',ASCII('à'); --224 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(227),'a') --SELECT 'ã',ASCII('ã'); --227 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(226),'a') --SELECT 'â',ASCII('â'); --226 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(233),'e') --SELECT 'é',ASCII('é'); --233 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(232),'e') --SELECT 'è',ASCII('è'); --232 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(234),'e') --SELECT 'ê',ASCII('ê'); --234 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(237),'i') --SELECT 'í',ASCII('í'); --237 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(236),'i') --SELECT 'ì',ASCII('ì'); --236 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(238),'i') --SELECT 'î',ASCII('î'); --238 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(243),'o') --SELECT 'ó',ASCII('ó'); --243 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(242),'o') --SELECT 'ò',ASCII('ò'); --242 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(244),'o') --SELECT 'ô',ASCII('ô'); --244 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(245),'o') --SELECT 'õ',ASCII('õ'); --245 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(250),'u') --SELECT 'ú',ASCII('ú'); --250 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(249),'u') --SELECT 'ù',ASCII('ù'); --249 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(251),'u') --SELECT 'û',ASCII('û'); --251 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(252),'u') --SELECT 'ü',ASCII('ü'); --252 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(231),'c') --SELECT 'ç',ASCII('ç'); --231 
/*
CARACTERES MAIUSCULOS
*/
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(193),'A') --SELECT 'Á',ASCII('Á'); --193 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(192),'A') --SELECT 'À',ASCII('À'); --192 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(194),'A') --SELECT 'Â',ASCII('Â'); --194 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(195),'A') --SELECT 'Ã',ASCII('Ã'); --195 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(201),'E') --SELECT 'É',ASCII('É'); --201 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(200),'E') --SELECT 'È',ASCII('È'); --200 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(202),'E') --SELECT 'Ê',ASCII('Ê'); --202 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(205),'I') --SELECT 'Í',ASCII('Í'); --205 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(204),'I') --SELECT 'Ì',ASCII('Ì'); --204 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(206),'I') --SELECT 'Î',ASCII('Î'); --206 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(211),'O') --SELECT 'Ó',ASCII('Ó'); --211 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(210),'O') --SELECT 'Ò',ASCII('Ò'); --210 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(212),'O') --SELECT 'Ô',ASCII('Ô'); --212 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(213),'O') --SELECT 'Õ',ASCII('Õ'); --213 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(218),'U') --SELECT 'Ú',ASCII('Ú'); --218 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(217),'U') --SELECT 'Ù',ASCII('Ù'); --217 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(219),'U') --SELECT 'Û',ASCII('Û'); --219 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(220),'U') --SELECT 'Ü',ASCII('Ü'); --220 
   SET @TXTSEQUENCIA = REPLACE(@TXTSEQUENCIA COLLATE Latin1_General_BIN,char(199),'C') --SELECT 'Ç',ASCII('Ç'); --199 

   RETURN (@TXTSEQUENCIA) 

END

Fabiano Carvalho

Fabiano Carvalho
Responder

Mais Posts

24/10/2014

Alex Lekao

Galera,

Achei esse post [url:descricao=Eliminando caracteres especiais de strings no SQL Server - Collate Leia mais em: Eliminando caracteres especiais de strings no SQL Server - Collate https://www.devmedia.com.br/eliminando-caracteres-especiais-de-strings-no-sql-server-collate/25286#ixzz3H4xreHAj]https://www.devmedia.com.br/eliminando-caracteres-especiais-de-strings-no-sql-server-collate/25286[/url] mas confesso que estou meio confuso. rsrsr
Responder

24/10/2014

Roniere Almeida

Boa tarde Alex, pelo que pesquisei tambem, pode-se mudar o Collation, mas não sei se é possivel com o banco em produção.

olha aqui:

[url]http://emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html[/url]
Responder

24/10/2014

Alex Lekao

Oi Roniere,

Ate cheghei nesse link tbm, pelo que percebi nas pesquisas ate eh possivel vc mudar a collation com o banco em producao, mas nao sei se influenciara alguma coisa no ERP de modo geral.

Pelas pesquisas ate encontrei que tem como mudar a collation da coluna em especifico ou da tabela, mas pelo que estou vendo na cobre todos os caracteres. rsrr
Responder

24/10/2014

Roniere Almeida

Para evitar problemas no servidor de produção é bom testar em outro ambiente, no caso o de testes.
Responder

24/10/2014

Alex Lekao

Pois eh, os caras nao tem ambiente de testes aqui. rsrsr

entao, fico a ver navios. rsrsr
Responder

24/10/2014

Roniere Almeida

Eu não sei se para vocês é perder tempo, mas tem como fazer ou pelo menos tentar recriar um ambiente parecido com o utilizado, com maquinas virtuais mesmo.
Responder

24/10/2014

Alex Lekao

cara eu ate sei, ja ate propus, mas os caras normalmente nao autorizam, sao "disconfiados", e nao tiro a razao deles, tem muita gente que vem com essa desculpe de maquina virtual e tal e faz m... em cima de m... nessas VMs. rsrsr
Responder

24/10/2014

Marisiana Battistella

Você poderia criar um banco e restaurar um backup dele nesse banco com alguns dados para fazer os testes.
Como se fizesse uma replica do banco...
Responder

24/10/2014

Roniere Almeida

Rapaz, ta dificil hein, hehehe, brincadeira, entendo como deve ser, essa opção da Marisiana é bem mais viavel.
Responder

24/10/2014

Marisiana Battistella

Sim... é bem prático! =)
Eu faço isso quando preciso testar alguma coisa q não pode ser em produção...
Responder

28/10/2014

Alex Lekao

Oi Marisiana,

Eu ate fazia isso quando o servidor era local, agora como ele esta no Data Center, eu evito ficar movendo bases de la para ca(local).

Embora que seja possivel restaurar a base com outro nome, mesmo no Data Center, como o pessoal eh meio desconfiado, prefiro evitar.

To numa sinuca de bico.

=/

Você poderia criar um banco e restaurar um backup dele nesse banco com alguns dados para fazer os testes.
Como se fizesse uma replica do banco...



Ate é, mas eh meio complicado de fazer isso pelos motivos citados acima. rsrsr

Rapaz, ta dificil hein, hehehe, brincadeira, entendo como deve ser, essa opção da Marisiana é bem mais viavel.
Responder

28/10/2014

Roniere Almeida

Essa é uma questão bem especifica, queria mesmo te ajudar.
Responder

28/10/2014

Alex Lekao

blz.

Sem crise... mas estou me virando a medida do possivel. rsrsr
Responder

28/10/2014

Roniere Almeida

Para finalizar minha participação, se puder depois nos informe como foi feito, ta certo?
Responder

28/10/2014

Marisiana Battistella

Entendo Alex, é complicado.
Você podia tentar pedir se é possível criar uma base testes que fique fixa e sempre com o mesmo nome.
Nunca apanhe esse banco. Elimine tabelas, limpe os dados quantas vezes for necessário, restaure backups de diferentes bases...
Parece meio louco, mas talvez seja uma idéia útil... =D
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar