julianometal
(usa Ubuntu)
Enviado em 08/09/2008 - 22:04h
Sim! Tem "IF" no PostgreSQL usando apenas sql.
A estrutura é a seguinte:
CASE expressão
WHEN valor THEN resultado
[WHEN ...]
[ELSE resultado]
END
Ok... talvez assim não tenha ficado tão claro...
Vamos pôr a mão na massa!
Crie uma base de dados para teste.
O exercício consiste em dizer se uma cidade é paulista ou não
baseando-se na UF.
Criação da tabela:
create table unidade(
uf char(2),
cidade varchar(20)
);
Inserção de dados:
INSERT INTO unidade VALUES ('SP','Sao Paulo');
INSERT INTO unidade VALUES ('SP','Jundiai');
INSERT INTO unidade VALUES ('SP','Valinhos');
INSERT INTO unidade VALUES ('SP','Americana');
INSERT INTO unidade VALUES ('RJ','Niteroi');
INSERT INTO unidade VALUES ('RJ','Rio de Janeiro');
INSERT INTO unidade VALUES ('MG','Belo Horizonte');
INSERT INTO unidade VALUES ('MG','Ouro Preto');
Agora sim nosso "IF", que na verdade é o "CASE":
SELECT uf,cidade,
CASE uf
WHEN 'SP' THEN 'Paulista'
ELSE 'Não paulista'
END
FROM unidade;
Produziu o seguinte resultado:
uf | cidade | case
----+----------------+--------------
SP | Sao Paulo | Paulista
SP | Jundiai | Paulista
SP | Valinhos | Paulista
SP | Americana | Paulista
RJ | Niteroi | Não paulista
RJ | Rio de Janeiro | Não paulista
MG | Belo Horizonte | Não paulista
MG | Ouro Preto | Não paulista
(8 registros)
Caso desejar pode dar um apelido à terceira coluna:
SELECT uf,cidade,
CASE uf
WHEN 'SP' THEN 'Paulista'
ELSE 'Não paulista'
END
AS origem
FROM unidade;
Resultado:
uf | cidade | origem
----+----------------+--------------
SP | Sao Paulo | Paulista
SP | Jundiai | Paulista
SP | Valinhos | Paulista
SP | Americana | Paulista
RJ | Niteroi | Não paulista
RJ | Rio de Janeiro | Não paulista
MG | Belo Horizonte | Não paulista
MG | Ouro Preto | Não paulista
(8 registros)
Agora o resto é com vc!
Um grande abraço!