PostgreSQL Prático/Funções Internas/Matemáticas
5.2 – Funções Matemáticas
Operadores Matemáticos
+, -, *, /, % (módulo, resto de divisão de inteiros), ^(potência), !(fatorial), @(valor absoluto)
| / - rais quadrada ( | / 25.0 = 5)
| | / - raiz cúbica ( | | / 27.0 = 3)
Algumas funções Matemáticas
ABS(x) - valor absoluto de x
CEIL(numeric) - arredonda para o próximo inteiro superior
DEGREES(valor) - converte valor de radianos para graus
FLOOR(numeric) - arredonda para o próximo inteiro inferior
MOD(x,y) - resto da divisão de x por y
PI() - constante PI (3,1415...)
POWER(x,y) - x elevado a y
RADIANS(valor) - converte valor de graus para radianos
RANDOM() - valor aleatório entre 0 e 1
ROUND(numeric) - arredonda para o inteiro mais próximo
ROUND(v, d) - arredonda v com d casas decimais
SIGN(numeric) - retorna o sinal da entrada, como -1 ou +1
SQRT(X) - Raiz quadrada de X
TRUNC (numeric) - trunca para o nenhuma casa decimal
TRUNC (v numeric, s int) - trunca para s casas decimais
Operadores Lógicos:
AND, OR e NOT. TRUE, FALSE e NULL
Operadores de Comparação:
<, >, <=, >=, =, <> ou !=
a BETWEEN x AND y
a NOT BETWEEN x AND y
expressão IS NULL
expressão IS NOT NULL
expressão IS TRUE
expressão IS NOT TRUE
expressão IS FALSE
expressão IS NOT FALSE
expressão IS UNKNOWN
expressão IS NOT UNKNOWN
OPERADOR NULL
Em SQL NULL é para valores inexistentes. Regra geral: NULL se propaga, o que significa que com quem NULL se combina o resultado será um NULL. NULL não zero, não é string vazia nem string de comprimento zero.
Um exemplo: num cadastro de alunos, para o aluno que ainda não se conhece a nota, não é correto usar zero para sua nota, mas sim NULL. Não se pode efetuar cálculos de expressões onde um dos elementos é NULL.
COMPARANDO NULLs
NOT NULL com NULL -- Unknown
NULL com NULL -- Unknown
CONVERSÃO DE/PARA NULL
NULLIF() e COALESCE()
NULLIF(valor1, valor2)
NULLIF – Retorna NULL se, e somente se, valor1 e valor2 forem iguais, caso contrário retorna valor1.
Algo como:
if (valor1 == valor2){
then NULL
else valor1;
Retorna valor1 somente quando valor1 == valor2.
COALESCE – retorna o primeiro de seus argumentos que não for NULL. Só retorna NULL quando todos os seus argumentos forem NULL.
Uso: mudar o valor padrão cujo valor seja NULL.
create table nulos(nulo int, nulo2 int, nulo3 int);
insert into nulos values (1,null,null);
select coalesce(nulo, nulo2, nulo3) from nulos; - - Retorna 1, valor do campo nulo;
select coalesce(nulo2, nulo3) from nulos; - - Retorna NULL, pois ambos são NULL.
GREATEST - Retorna o maior valor de uma lista - SELECT GREATEST(1,4,6,8,2); - - 8
LEAST - Retorna o menor valor de uma lista.
Todos os valores da lista devem ser do mesmo tipo e nulos são ignorados.
Obs.: Ambas as funções acima não pertencem ao SQL standard, mas são uma extensão do PostgreSQL.
CONCATENANDO NULLs
A regra é: NULL se propaga. Qualquer que concatene com NULL gerará NULL.
STRING || NULL -- NULL
Usos:
- Como valor default para campos que futuramente receberão valor.
- Valor default para campos que poderão ser sempre inexistentes.
NULL ou não NULL, eis a questão!
Bom artigo do Luiz Paulo de Oliveira Santos no Dicas-L