Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131

Deprecated: A função WP_Dependencies->add_data() foi chamada com um argumento que está obsoleto desde a versão 6.9.0! Os comentários condicionais do IE são ignorados por todos os navegadores compatíveis. in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131
Ifnull no PostgreSQL

Ifnull no PostgreSQL

Para quem inicia os trabalhos com o PostgreSQL, sempre sentimos algumas diferenças de funções nativas, principalmente quem originou-se do MySQL, o que é o meu caso.

Este impacto as vezes é negativo, pois, gera um desconforto no analista tendo em vista as facilidade que ele tinha no outro SGBD, o que pode ocasionar críticas ao nosso elefante. Dentre as funções posso citar uma função muito útil que não existe no PostgreSQL, e que é a Ifnull, qual nosso amigo elefante substitui através da função coalesce. Para entender melhor primeiramente vamos conhecer a função:

COALESCE ( valor [ ... ])
COALESCE retorna o primeiro de seus argumentos que não é nulo. Null é retornado somente se todos os argumentos são nulos. É frequentemente utilizado para substituir um valor padrão para valores nulos quando os dados são usados ​​para exibição, por exemplo:
SELECT COALESCE (descrição, short_description, '(nenhuma)') ...
Como um CASE expressão, COALESCE não vai avaliar os argumentos que não são necessários para determinar o resultado, ou seja, os argumentos para o direito de o argumento não nulo primeiro não são avaliados. Esta função SQL padrão oferece recursos similares ao NVL e IFNULL , que são usados ​​em alguns sistemas de banco de dados.”

Agora que já conhecemos a função, vamos exercitar um pouco:


1º Passo – Criando a tabela:

 -- Table: paposql.pessoa  
 -- DROP TABLE paposql.pessoa;  
 CREATE TABLE paposql.pessoa  
 (  
  id bigint NOT NULL,  
  nome character varying(100),  
  dt_nascimento date,  
  CONSTRAINT pk_id_pessoa PRIMARY KEY (id )  
 )  
 WITH (  
  OIDS=FALSE  
 );  
 ALTER TABLE paposql.pessoa  
  OWNER TO postgres;  

2º Passo – Inserindo os registros:

 INSERT INTO paposql.pessoa(  
       id, nome, dt_nascimento)  
   VALUES (1,'Pessoa 1','2012-01-01')  
       ,(2,'Pessoa 2','2011-01-01')  
       ,(3,'Pessoa 3',null)  
       ,(4,'Pessoa 4','2010-01-01')  
       ,(5,'Pessoa 5',null);        

3º Passo – Agora, vamos executar um comando select para retornar as pessoas cadastradas no banco de dados:

 Select id, nome, dt_nascimento  
 From paposql.pessoa  
 id  nome         dt_nascimento  
 1   "Pessoa 1"   "2012-01-01"  
 2   "Pessoa 2"   "2011-01-01"  
 3   "Pessoa 3"   ""  
 4   "Pessoa 4"   "2010-01-01"  
 5   "Pessoa 5"   ""  

Como podemos ver, os registros 3 e 5 não possuem data de nascimento, isto porque no momento da inclusão alimentamos a tabela com o valor Null. Mas neste exemplo, preciso que a coluna possua um valor, para isto utilizaremos o coalesce, vamos ao exemplo:

4º – Passo – Solucionando o problema:

 Select id, nome, Coalesce(dt_nascimento,current_date)  
 From paposql.pessoa   
 id  nome         coalesce
 1   "Pessoa 1"   "2012-01-01"  
 2   "Pessoa 2"   "2011-01-01"  
 3   "Pessoa 3"   "2012-06-26"  
 4   "Pessoa 4"   "2010-01-01"  
 5   "Pessoa 5"   "2012-06-26"  

Pronto, com o coalesce retornamos um valor para os registros que possuem o valor Null. Neste exemplo utilizei um campo data de nascimento para demonstração, mas, por obrigação este campo em um cadastro deve possuir a condição not null, evitando assim valores nulos, o intuito foi somente aplicar a situação.

Espero mais uma vez ter sido útil, um grande abraço e até a próxima.

1 comentário em “Ifnull no PostgreSQL”

Deixe um comentário