>>> '%g' % 0
'0'
>>> '%g' % 0.0
'0'
>>> '%g' % 0.1
'0.1'
>>> '%g' % 1.0
'1'
В PostgreSQL такой возможности нет. Вы можете сделать это только в pl / PgSQL (или другом pl / *), но не в простом SQL.
Исключением является запрос WITH ()
, который может работать как переменная или даже как кортеж
переменных. Это позволяет вам вернуть таблицу временных значений.
WITH master_user AS (
SELECT
login,
registration_date
FROM users
WHERE ...
)
SELECT *
FROM users
WHERE master_login = (SELECT login
FROM master_user)
AND (SELECT registration_date
FROM master_user) > ...;
Помимо использования pl / pgsql или другого языка pl / *, как было предложено, это единственная другая возможность, о которой я мог подумать.
begin;
select 5::int as var into temp table myvar;
select *
from somewhere s, myvar v
where s.something = v.var;
commit;