Com o MSSQL é fácil, o @ marcando o início de todos os nomes de variáveis permite que o analisador saiba que é uma variável e não uma coluna.
Isso é útil para coisas como injetar valores constantes onde um select está fornecendo a entrada para uma tabela de inserção ao copiar de uma tabela de preparo.
declare @foo varchar(50) = 'bar';
select @foo;
Como você expressa isso para o postgres?
O PostgreSQL não é tão flexível em onde e como permite o uso de variáveis. A coisa mais próxima do que você está tentando realizar provavelmente seria envolvê-lo em um
DO
bloco assim:Observe que isso depende do contexto e você pode encontrar mais informações nesta resposta do StackOverflow .
Além disso, você pode criar uma função que declara variáveis e retorna um valor assim:
Mais informações sobre esta abordagem aqui .
SQL não tem suporte para variáveis, isso só é possível em linguagens procedurais (no Postgres seria por exemplo PL/pgSQL).
A maneira de fazer isso em SQL simples é usar um CTE (que também é uma solução de plataforma cruzada e não está vinculada a nenhum dialeto SQL):
Bem, você não precisa de uma variável para isso: