Pular para o conteúdo

Escrevendo Caracteres Especiais

Olá pessoal,

Neste post, pretendo ensinar como fazer carga de caracteres especiais no Oracle. Para ficar mais fácil entender o problema e também sua solução, vou usar um exemplo: suponhamos que o sistema que está sendo desenvolvido armazene, em um banco de dados, textos contendo caracteres especiais.
Vamos imaginar a tabela CODIGOS que possui um campo chamado Id, number(10) e outro campo chamado Conteudo, varchar2(255).
Se tentarmos inserir o texto Isso é um &teste na tabela, o caracter & será interpretado como entrada de dados pelo teclado. Então, qual seria a solução? É simples: empregamos um caracter como escape. Quando utilizamos um caracter como escape, o caracter se segue este é interpretado como um caracter comum, como A, 1, etc. A escolha do caracter de escape merece algum cuidado, por exemplo, deve ser um caracter que não é utilizado em nenhum lugar no texto a ser inserido, pois um caracter de escape é um caracter que não é inserido, servindo apenas para avisar que o próximo caracter equivale a um alfanumérico. Como na inserção que iremos fazer não existe a ocorrência de !. vamos elegê-lo para ser nosso escape. Logo, a solução fica assim:

SET ESCAPE !
insert into CODIGOS (Id,Conteudo) values (1,'Isso é um !&teste');
SET ESCAPE OFF

O mesmo recurso deve ser utilizado para inserção de caracteres como símbolo de parágrafo (aqueles ss um sobre o outro), símbolo de grau, símbolos de exponenciação, etc.
Vamos a outra situação, vamos inserir a frase Eles criam galinhas d’angola. Agora, como vamos fazer pra que o ‘ não seja interpretado como fim da string a ser inserida? A solução é ainda mais simples: basta duplicar o símbolo ‘. A solução fica assim:

insert into CODIGOS (Id,Conteudo) values (2,'Eles criam galinhas d''angola.');

Por hoje é só. Espero ter ajudado….

Abraços

Mariângela Molina

Mariângela Molina

Mariângela Molina, formada em Ciência da Computação, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Modelagem de Dados e Programação para Banco de Dados; Trabalha com Oracle há 10 anos e é professora na Faculdade de Tecnologia de Mogi das Cruzes (Fatec-MC), onde ministra aulas de Banco de Dados e Laboratório de Banco de Dados..

Comentário(s) da Comunidade

  1. Avatar de Gyann

    Amigo, veja se pode me ajudar!
    Temos uma aplicação aki na empresa que lê um xml e depois grava os dados em um banco.
    Quando vai gravar tais dados, onde contem caracteres especiais (ç, á, â, ã, etc.) no lugar é gravado “?”. O que pode ser isso? Data-sources, aplicação, ou banco?

    Desde já agradeço!

  2. Avatar de MaryMolina

    O problema esta na forma que voce esta granando os dados no banco de dados. Tente substituir caracteres especiais pelo seu codigo correspondente: CH(xxx). Eu fiz isso e obtive sucesso na carga de dados para dentro de um banco 10.2.

    Boa sorte!

  3. Avatar de Alexandre

    Bom dia Amigo,
    Estou com um problema, estou fazendo uma conversao de banco de dados, de Firebird para Oracle, porem ao utilizar a ferramenta para migrar os dados, esta sendo gerado erros.
    Os registros que possuem caracteres especiais, estão sendo inseridos com valores maiores que o tamanha do campo, gerando log e nao inserindo os dados.
    Minha duvida é, existe uma maneira de ignorar esses caracteres no oracle?
    Atenciosamente,

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress