o peregrino_ remover caracteres especiais em campos do sql server

5
27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 1/5 DBA, DB2, MySql, Oracle, Postgres, SQL Server, TI, etc. O Peregrino segunda-feira, 4 de julho de 2011 Remover caracteres especiais em campos do SQL Server Function scalar no SQL SERVER para remover caracteres especiais, exatamente 33 caracteres de controle (especiais) menos o NULL ficando 32 ao todo, recomendo usar essa store function, (store procedure) em procedimentos de ETL, migração de dados ou em consultas que precisem remover esses tais caracteres da tabela ASCII. Fica aqui o compartilhamento do conhecimento. Abraços. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 -- -- Nome Artefato/Programa..: sp_rm_special_chars.sql -- Autor(es) ............... : Emerson Hermann (emersonhermann at gmail. -- Data Inicio ............ : 04/07/2011 -- Data Atual .............. : 04/07/2011 -- Versao .................. : 0.01 -- Compilador/Interpretador: T-SQL (Transact SQL) -- Sistemas Operacionais...: Windows -- SGBD .................... : MS SQL Server 2008 -- Kernel .................. : Nao informado! -- Finalidade .............. : store procedure (function) para remocao d -- OBS ..................... : Remover "caracteres especiais" em campos -- IF EXISTS ( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N '[dbo].[sp_rm_special_chars]' ) AND type IN (N 'FN' ) ) DROP FUNCTION sp_rm_special_chars GO CREATE FUNCTION sp_rm_special_chars (@stexto varchar ( max )) RETURNS varchar ( max ) AS BEGIN IF @stexto IS NULL BEGIN RETURN NULL END -- Tabela ASCII -- Caracteres não imprimiveis, 33 ao total, menos o NUL fica 32 -- hex d abr ctl descricao -- 00 0 NUL ^@ Null - Nulo desativado, pois o nulo no postgres func SET @stexto = ( SELECT REPLACE (@stexto, CHAR (1), '' )) -- 01 1 SOH ^A SET @stexto = ( SELECT REPLACE (@stexto, CHAR (2), '' )) -- 02 2 STX ^B SET @stexto = ( SELECT REPLACE (@stexto, CHAR (3), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (4), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (5), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (6), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (7), '' )) -- 07 7 BEL ^G SET @stexto = ( SELECT REPLACE (@stexto, CHAR (8), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (9), '' )) -- 09 9 HT ^I SET @stexto = ( SELECT REPLACE (@stexto, CHAR (10), '' )) -- 0A 10 LF ^J SET @stexto = ( SELECT REPLACE (@stexto, CHAR (11), '' )) -- 0B 11 VT ^K SET @stexto = ( SELECT REPLACE (@stexto, CHAR (12), '' )) -- 0C 12 FF ^L SET @stexto = ( SELECT REPLACE (@stexto, CHAR (13), '' )) -- 13 19 DC3 ^S SET @stexto = ( SELECT REPLACE (@stexto, CHAR (14), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (15), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (16), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (17), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (18), '' )) SET @stexto = ( SELECT REPLACE (@stexto, CHAR (19), '' )) Domínio com Hospedagem UOLHOST.com.br/registro-de-dCompre 1 Domínio e ganhe 30 dias de Hospedagem Start, confira agora. 2 Remover caracteres especiais em campos do SQL Server Function scalar no SQL SERVER para remover caracteres especiais, exatamente 33 caracteres de controle (especiais) menos o NULL ficando ... Remover caracteres especiais em campos do SQL Server Function scalar no SQL SERVER para remover caracteres especiais, exatamente 33 caracteres de controle (especiais) menos o NULL ficando... Configurando Replicação Nativa do Postgres 9.0 no Slackware 13.0 Uma das grandes vantagens no Postgres 9.0 é a replicação nativa, assíncrona, baseada no log de transação (WAL- LOG), usando Hot Standby e St... Full Text Search, Busca Textual no PostgreSQL Adaptei uma apresentação(slides) que fiz sobre FTS no PG ... Full Text Search no PostgreSQL (FTS) Teoria, Utilização, Possibilidades e Ap... Remover Letras em campos Postagens populares mais Próximo blog» Criar um blog Login ?

Upload: anderson-muniz

Post on 27-Nov-2015

616 views

Category:

Documents


24 download

TRANSCRIPT

Page 1: O Peregrino_ Remover Caracteres Especiais Em Campos Do SQL Server

27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server

emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 1/5

DBA, DB2, MySql, Oracle, Postgres, SQL Server, TI, etc.

O Peregrino

segunda-feira, 4 de julho de 2011

Remover caracteres especiais em campos do SQLServer

Function scalar no SQL SERVER para remover

caracteres especiais, exatamente 33 caracteres de

controle (especiais) menos o NULL ficando 32 ao

todo, recomendo usar essa store function, (store

procedure) em procedimentos de ETL, migração de

dados ou em consultas que precisem remover esses

tais caracteres da tabela ASCII.

Fica aqui o compartilhamento do conhecimento.

Abraços.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

---- Nome Artefato/Programa..: sp_rm_special_chars.sql-- Autor(es)...............: Emerson Hermann (emersonhermann at gmail.com) O Peregrino (-- Data Inicio ............: 04/07/2011-- Data Atual..............: 04/07/2011-- Versao..................: 0.01-- Compilador/Interpretador: T-SQL (Transact SQL) -- Sistemas Operacionais...: Windows-- SGBD....................: MS SQL Server 2008-- Kernel..................: Nao informado!-- Finalidade..............: store procedure (function) para remocao de caracteres especiais do ASCII (33) caracteres nao imprimiveis -- OBS.....................: Remover "caracteres especiais" em campos do SQL Server-- IF EXISTS( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_rm_special_chars]') AND type IN (N'FN')) DROP FUNCTION sp_rm_special_charsGO CREATE FUNCTION sp_rm_special_chars (@stexto varchar(max))RETURNS varchar(max)ASBEGIN IF @stexto IS NULL BEGIN RETURN NULL END -- Tabela ASCII -- Caracteres não imprimiveis, 33 ao total, menos o NUL fica 32 -- hex d abr ctl descricao -- 00 0 NUL ̂@ Null - Nulo desativado, pois o nulo no postgres funciona em forma de cascata SET @stexto = (SELECT REPLACE(@stexto, CHAR(1),'')) -- 01 1 SOH ̂A Start of Header - Início do cabeçalho SET @stexto = (SELECT REPLACE(@stexto, CHAR(2),'')) -- 02 2 STX ̂B Start of Text - Início do texto SET @stexto = (SELECT REPLACE(@stexto, CHAR(3),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(4),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(5),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(6),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(7),'')) -- 07 7 BEL ̂G Bell - Campainha SET @stexto = (SELECT REPLACE(@stexto, CHAR(8),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(9),'')) -- 09 9 HT ̂I Horizontal Tabulation - Tabulação horizontal SET @stexto = (SELECT REPLACE(@stexto, CHAR(10),'')) -- 0A 10 LF ̂J Line-Feed - Alimenta linha SET @stexto = (SELECT REPLACE(@stexto, CHAR(11),'')) -- 0B 11 VT ̂K Vertical Tabulation - Tabulação vertical SET @stexto = (SELECT REPLACE(@stexto, CHAR(12),'')) -- 0C 12 FF ̂L Form-Feed - Alimenta formulário SET @stexto = (SELECT REPLACE(@stexto, CHAR(13),'')) -- 13 19 DC3 ̂S Device-Control 3 SET @stexto = (SELECT REPLACE(@stexto, CHAR(14),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(15),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(16),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(17),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(18),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(19),''))

Domínio comHospedagemUOLHOST.com.br/registro-de-d…

Compre 1 Domínio e ganhe30 dias de HospedagemStart, confira agora.

2

Removercaracteresespeciais emcampos do SQLServer

Function scalar no SQLSERVER para removercaracteres especiais,exatamente 33 caracteres decontrole (especiais) menos oNULL ficando ...

Removercaracteresespeciais emcampos do SQLServer

Function scalar no SQLSERVER para removercaracteres especiais,exatamente 33 caracteres decontrole (especiais) menos oNULL ficando...

Configurando ReplicaçãoNativa do Postgres 9.0 noSlackware 13.0

Uma das grandes vantagensno Postgres 9.0 é a replicaçãonativa, assíncrona, baseadano log de transação (WAL-LOG), usando Hot Standby eSt...

Full Text Search, BuscaTextual no PostgreSQL

Adaptei umaapresentação(slides) que fizsobre FTS no PG ... Full TextSearch no PostgreSQL (FTS)Teoria, Utilização,Possibilidades e Ap...

Remover Letras em campos

Postagens populares

mais Próximo blog» Criar um blog Login

?

Page 2: O Peregrino_ Remover Caracteres Especiais Em Campos Do SQL Server

27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server

emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 2/5

Postado por O Peregrino às 18:30

Marcadores: SQL Server

545556575859606162636465666768697071727374757677

SET @stexto = (SELECT REPLACE(@stexto, CHAR(19),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(20),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(21),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(22),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(23),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(24),'')) -- 18 24 CAN ̂X Cancel SET @stexto = (SELECT REPLACE(@stexto, CHAR(25),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(26),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(27),'')) -- 1B 27 ESC ̂[ Escape SET @stexto = (SELECT REPLACE(@stexto, CHAR(28),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(29),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(30),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(31),'')) SET @stexto = (SELECT REPLACE(@stexto, CHAR(127),'')) -- 7F127 DEL ̂? Delete RETURN @stexto ENDGO -- Exemplo de uso: -- SELECT texto = dbo.sp_rm_special_chars ('legal e bom'), getdate() as data; -- 'legal e bom' -- SELECT texto = dbo.sp_rm_special_chars ('NULL'), getdate() as data; -- 'NULL'-- SELECT texto = dbo.sp_rm_special_chars (NULL), getdate() as data; -- NULL

Recomende isto no Google

Respostas

Responder

Respostas

5 comentários:

Anônimo 28 de dezembro de 2012 08:47

COLLATE sql_latin1_general_cp1251_ci_as

Responder

O Peregrino 21 de outubro de 2013 14:12

Também é uma opção interessante, mudando o collation para remover

caracteres especiais, mas prefiro a function com replace, pois não é

necessário parar o bd, apesar de não ter muita performance, a intenção

deste artigo é dar opções e não ser a solução definitiva, entrentanto caso

queira mudar o collation tem um passo a passo nesse artigo também de

minha autoria: http://emersonhermann.blogspot.com.br/2012/04/como-

alterar-o-collation-de-um-bd-no.html

Seja Feliz!

leandromd 25 de outubro de 2013 14:18

Olá.

O que acham da solução no link abaixo?

http://www.devmedia.com.br/eliminando-caracteres-especiais-de-strings-no-sql-

server-collate/25286

Responder

O Peregrino 25 de outubro de 2013 15:14

Olá leandromd,

Interessante o artigo descrito, vejo como mais uma forma de se chegar

ao mesmo resultado, porém ainda prefiro a técnica de substituir apenas

os 32 caracteres especiais da tabela ASCII (descrita aqui

http://emersonhermann.blogspot.com.br/2011/07/remover-caracteres-

do SQL Server

Remover Letrasem campos doSQL Server Vezpor outra,

precisamos de fazer uso decampos concatenados comnúmeros e strings e em alguns...

Como alterar oCOLLATION deum BD no SQLServer 2005 ou2008

Esse artigo se propõe aensinar como alterar oscollations de todos os bancosde dados de uma instanciaSQL Server 2005/2008,inclusive tabe...

Como ValidarCódigo de BarrasGTIN, antigoEAN13 no SQLSERVER 2008

Como Validar Código deBarras GTIN, antigo EAN13 noSQL SERVER 2008 Com asexigências da SEFAZ, notocante a Nota FiscalEletrônica, torn...

Remover acentosem SQL SERVER2005 / 2008 /2012

APDSJ! Função(store function) para removeracentos em SQL Server 2005,SQL Server 2008 e SQLServer 2012. Funciona paramaiúsculas e...

A Bíblia do DBA

Neste artigo, ireidescrever comoinstalar econfigurar um

base de dados, partindo doponto de que o banco, serviço,já estão instalados....

Consulta SQL dePlano de Contas- Query Contabil -Query paraCentro de Custo

A idéia primordial desse artigoé demonstrar comodesenvolver uma query sqlusando um plano de contas oucentro de custo, o principio é o...

Siga-me por Email

Email address... Submit

Translate

Page 3: O Peregrino_ Remover Caracteres Especiais Em Campos Do SQL Server

27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server

emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 3/5

Postagem mais recente Postagem mais antigaInício

Assinar: Postar comentários (Atom)

Responder

Digite seu comentário...

Comentar como: Conta do Google

Publicar

Visualizar

especiais-em-campos.html).

Seguem os motivos:

1) Não remove os caracteres acentuados e nem altera a caixa baixa ou

alta das letras.

2) Não modifica cedilha por C.

3) Em bases com textos internacionalizados, não irá ter nenhuma

mudança.

4) Apenas remove os 32 caracteres especiais.

5) Eu sei o que está sendo removido (32 caracteres especiais), como

DBA detesto não saber o que está sendo alterado nos meus BDs.

6) Não altera nada na base apenas remove 32 caracteres especiais da

tabela ASCII, nada mais.

7) Já usei em produção com sucesso.

Espero ter ajudado.

Seja feliz! :)

O Peregrino 25 de outubro de 2013 15:29

Mais uma leandromd, complementando ...

A solução proposta no link elimina caracteres especiais e não especiais

em SQL Server, para os meus problemas do dia a dia não atende.

A verdade dói, mas tem que ser dita. :)

Vai fundo!!!

Selecione o idioma

Pow ered by Tradutor

Total de visualizações depágina

4 2 6 2 7

Pesquisar

Pesquisar este blog

Inscrever-se

Postagens

Comentários

Participar deste siteGoogle Friend Connect

Membros (12)

Já é um membro? Fazer login

Seguidores

SQL Server (23)

Postgres (18)

Oracle (5)

SQL (5)

Algoritmos (4)

MySql (1)

Outros (1)

Categorias

► 2013 (3)

► 2012 (14)

▼ 2011 (25)

► Dezembro (1)

► Novembro (4)

Arquivo do blog

Page 4: O Peregrino_ Remover Caracteres Especiais Em Campos Do SQL Server

27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server

emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 4/5

► Agosto (5)

▼ Julho (4)

Remover Letrasem campos doSQL Server

Full Text Search,Busca Textualno PostgreSQL

Removercaracteresespeciais emcampos do SQLServ...

Removercaracteresespeciais emcampos do SQLServ...

► Junho (3)

► Maio (1)

► Abril (2)

► Fevereiro (3)

► Janeiro (2)

► 2010 (6)

O Peregrino

Apenas umPeregrino, umpai de familiaque tenta

ganhar o pão de cada diacomo profissional de TI,trabalhou como DBA naFUNPEC instituição vinculadaa UFRN (www.ufrn.br), comocontratado, já trabalhou naFICAMP (www.ficamp.com.br),Peggasus(www.peggasus.com.br), eagora está na CHB(www.chbcredito.com.br) comoAnalista de Sistemas, ministraaulas de BD na IT Cursos(www.itcursos.com.br), etambém presta consultoria embanco de dados. Na BíbliaSagrada, Hebreus 13:14 relataa minha situação.

Visualizar meu perfil completo

Quem sou eu

Minha lista de blogs

Certificação BD[Treinamento] Oracle

Trainning On Demand

Há uma semana

Oracle BlogPesquisando uma palavra ou

texto em um schema do

banco de dados Oracle

Page 5: O Peregrino_ Remover Caracteres Especiais Em Campos Do SQL Server

27/11/13 O Peregrino: Remover caracteres especiais em campos do SQL Server

emersonhermann.blogspot.com.br/2011/07/remover-caracteres-especiais-em-campos.html 5/5

Há 3 semanas

Diário de um DBADe mudança…

Há 3 semanas

Meu Blog dePostgreSQL!!!Nada a temer com Lateral

Joins no PostgreSQL 9.3!

Há 2 meses

Kenia Milene G.'s BlogA Parte Que Te Cabe Nesse

Latifúndio

Há 2 meses

Agajorte: Java, Linux eGastronomiaTV Serpro - Conectado:

banco de dados espaciais

PostGIS

Há 2 meses

Euler TaveiraO que esperar da versão 9.3

Há 2 meses

-*- GeoMartins -*-O .bind() salvou dia!

Há um ano

MyTraceLog - Registrode um DBAInstalando novo HD SATA

no CentOS 5.6

Há um ano

Blog do BrunoMurassakiGUOB TECH DAY 2011

Há 2 anos

DBA de SaiaI'm Back...

Há 3 anos

www.profissionaloracle.com.br/gpo/

Modelo Awesome Inc.. Tecnologia do Blogger.