PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да зададете типове колони за CTE (общи таблични изрази) в PostgreSQL?

Мисля, че ще трябва да посочите типовете в израза VALUES във вашия случай:

WITH t (f0, f1) as (
  values 
     (1::bigint, 10::bigint),
     (2, 20)
)...

Имате нужда само от типовете на първия набор от стойности, PostgreSQL може да изведе останалите.

Да предположим например, че имаме две функции:

create function f(bigint, bigint) returns bigint as $$
begin
    raise notice 'bigint';
    return $1 * $2;
end;
$$ language plpgsql;

create function f(int, int) returns int as $$
begin
    raise notice 'int';
    return $1 * $2;
end;
$$ language plpgsql;

След това

WITH t (f0, f1) as (
    values
        (1, 10),
        (2, 20)
)
select f(f0, f1) from t;

ще ви даде два int забелязва, докато

WITH t (f0, f1) as (
    values
        (1::bigint, 10::bigint),
        (2, 20)
)
select f(f0, f1) from t;

ще ви даде два bigint известия.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматизирани надстройки на PostgreSQL клъстери в облак с почти нулев престой (част II)

  2. PostgreSQL:най-добрият начин за свързване на малки подгрупи от големи таблици

  3. Как да търсите дали цялата дума съществува в низ в Postgres

  4. В защита на sar (и как да го конфигурирате)

  5. Postgresql 9.x:Индекс за оптимизиране на заявки `xpath_exists` (XMLEXISTS)