Pular para o conteúdo

Função SQL replace: corrigindo inserções equivocadas

Dica publicada em Banco de Dados / Postgres
Juliano Atanazio julianometal
Hits: 10.287 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar

Função SQL replace: corrigindo inserções equivocadas

Imaginemos uma situação em que uma pessoa encarregada de cadastrar nomes de pessoas em um banco de dados. E que essa pessoa por algum motivo acabava confundindo os sobrenomes "dos Santos" e "da Silva".

No exemplo, o cadastro das pessoas que constam como "da Silva" na verdade teriam o sobrenome "dos Santos". Como corrigir isso? Fazer um UPDATE em cada linha? Há uma maneira simples, rápida e eficiente para isso:

Criação da tabela de exemplo:

CREATE TEMP TABLE tb1(
   nome varchar(25)
);


Inserção dos valores (equivocadamente):

INSERT INTO tb1 VALUES ('Genésio Silva'), ('Estrobaldo da Silva'), ('Aventina Silva'), ('Eloécio da Silva');

Arrumando o erro:

UPDATE tb1 SET nome = replace(nome, 'da Silva', 'dos Santos');

Verificando o resultado:

SELECT * from tb1;
Genésio Silva
Estrobaldo dos Santos
Aventina Silva
Eloécio dos Santos

Como pode se constatar, apenas as ocorrências da string "da Silva" e não "Silva" foram alteradas para o novo valor.

Eliminando linhas de comentário ou linhas em branco no Linux

Consulta aleatória com PostgreSQL

Clonando máquinas na rede pelo UDP Cast (sem Live CD do mesmo)

PostgreSQL com ZEROFILL e AUTO_INCREMENT

PostgreSQL: Concedendo ou revogando privilégios em colunas

Migração de encoding no PostgreSQL 8.3

Criando usuários no PostgreSQL

Instalação do PostgreSQL no CoLinux-Debian

Mudando encoding do Postgres 8.4 para LATIN1

Instalando PostgreSQL no FreeBSD

#1 Comentário enviado por kabalido em 22/03/2010 - 07:50h
Interessante! Sabia disso não. Valeu pela Dica.
Abs.

Contribuir com comentário

Entre na sua conta para comentar.