UPDATE com CASE WHEN POSTGRES

28 10 2008

Saudações a todos

Nos últimos como vocês sabem tenho tentado fazer o máximo de coisas possíveis usado SQL, estou surpreso com o que é possível ser feito só com SQL.

O Problema

Tinha que alterar o tipo de uma coluna de boolean para integer, facil né:

ALTER TABLE tabela ALTER COLUMN a TYPE integer

porém 😦

ERROR: column "a" cannot be cast to type "pg_catalog.int4"

Os tipos não são compatíveis.

Qual a Solução?

Criar uma nova coluna chamada b, passar os dados da coluna a para a coluna b, de forma que se o valor da coluna a for true, então o valor da coluna b será 7, caso contrário ele será 6, vamos lá!

ALTER TABLE tabela ADD COLUMN b integer

UPDATE tabela SET
b = CASE WHEN a = true THEN 4 ELSE 2 END

Beleza, agora é só apagar a coluna a e renomear a coluna b para a,

ALTER TABLE tabela DROP COLUMN a
ALTER TABLE tabela RENAME COLUMN b TO a

E por hoje é só pessoal!

Referência

http://www.postgresql.org/docs/8.1/static/ddl-alter.html

http://www.nabble.com/case-when…-end-in-update-clause–td16007974.html

Anúncios

Ações

Information

One response

14 04 2017
Wellington Cunha

Valeu meu brother c salvou meu codigo SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: