PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để chỉ định các loại cột cho CTE (Biểu thức bảng chung) trong PostgreSQL?

Tôi nghĩ rằng bạn phải chỉ định các loại bên trong biểu thức VALUES trong trường hợp của bạn:

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

Bạn chỉ cần các kiểu trên tập giá trị đầu tiên, PostgreSQL có thể suy ra phần còn lại.

Ví dụ:giả sử chúng ta có hai hàm:

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;

Sau đó

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

sẽ cung cấp cho bạn hai int thông báo trong khi đó

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

sẽ cung cấp cho bạn hai bigint thông báo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thích hợp để kiểm tra các phương thức chuỗi QueryBuilder của TypeORM là gì?

  2. Cấp đặc quyền PostgreSQL không hiển thị

  3. Createuser:không thể kết nối với cơ sở dữ liệu postgres:FATAL:role tom không tồn tại

  4. Có thể lưu trữ một số 1 byte trong Postgres không?

  5. Làm cách nào để bạn in kết quả của một truy vấn PostgreSQL ở định dạng CSV hoặc TSV từ dòng lệnh?