Pega a prosição do texto quebrando pelo segundo parametro da função
select split_part('hello world', ' ', 2)
Concatena o texto, elimina repetidos e ordena
select string_agg(distinct 'teste', ',' order by nome as)
Remove Todos acentos
select to_ascii('áããÓÒÂaçÇ')
Valida se a string é somente numeros
select 'pesquisa' ~ '^[-0-9]+$'
Converte para positivo
select abs(-200)
Arredonda para o próximo inteiro superior
select CEIL(numeric)
Valor aleatório (Interessante usar na ordenação order by RANDOM())
Select RANDOM()
Arredonda para o inteiro mais próximo, no segundo parametro, você pode configurar a dimenssão das casas decimais
ROUND(110.0813, 2) -- 110.08
Agrupar os dados em um array.
*Obs: o distinct irá remover registros duplicados no array, o FILTER (where nome is not null) filtrará para não vir dados nulos, funciona como um where normal da query.
Voce tambem poder usar o order by dentro do array_agg, porem não funciona se já estiver usando distinct
select array_agg(distinct nome) FILTER (where nome is not null) as agg
Varios Updates, com uma Query ou de outra tabela.
UPDATE tabela_a a SET
descricao = b.descricao
FROM
(select id, descricao from tabela_b)b
WHERE
a.idperfil = b.idperfil
select
cast(g.grade[1] as VARCHAR) as id,
cast(g.grade[2] as VARCHAR) as descricao
from
unnest(string_to_array('387,Teste 01;388,Teste 02;393,Teste 033',';')) v(grade)
left join lateral string_to_array(v.grade,',') g(grade) on true
Insere, caso tenha confilto de chave, somente ignora a inserção.
INSERT INTO tabela (nome, pagador, localidade) VALUES
('The Best of the World', true, 'CA')
ON CONFLICT (id, nome) DO NOTHING;
Insere, caso tenha confilto de chave, faz update dos dados.
INSERT INTO table (nome, pagador, localidade) VALUES
('Irineu', false, 'BR')
ON CONFLICT (id) DO UPDATE SET
nome = EXCLUDED.nome,
pagador = EXCLUDED.pagador,
localidade = EXCLUDED.localidade
RETURNING *;
Concta com outro banco de dados
select * from dblink('hostaddr=***.***.***.*** port=**** dbname=dbname user=usr password=pass','
select
u.id,
u.nome
from usuario u
order by 1
')tb2
(
id integer,
nome varchar
)
Converte uma consulta em um Json
select
d.idequipe,
array_to_json(array_agg(row_to_json( d ))) as descricao
from tabela d
group by 1
Pega valor anterior da linha de cima
Para mais explicação: Amazon