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

Không thể xác định kiểu đa hình vì đầu vào có kiểu không xác định

Vấn đề ở đây là '' as name không thực sự chỉ định một loại cho giá trị. Đó là unknown loại và PostgreSQL thường suy ra loại thực từ những thứ như cột bạn đang chèn nó vào hoặc hàm nào bạn chuyển nó vào.

Trong trường hợp này, bạn chuyển nó vào array_agg , là một polymorphc hàm số. Nó có thể nhận đầu vào của anyelement kiểu giả , thực sự chỉ có nghĩa là "tìm ra nó trong thời gian chạy".

PostgreSQL sẽ vẫn tìm ra nó ngoại trừ array_to_string không thực sự nhận text[] làm đầu vào. Nó cần anyarray - một kiểu đa hình khác, như anyelement cho mảng.

Vì vậy, không có gì trong truy vấn để cho PostgreSQL biết loại nào '' Là. Nó có thể đoán ý bạn là text , nhưng nó hơi quá cầu kỳ cho điều đó. Vì vậy, nó phàn nàn. Vấn đề được đơn giản hóa thành:

regress=> SELECT array_to_string(array_agg(''), ',');
ERROR:  could not determine polymorphic type because input has type "unknown"

Để giải quyết vấn đề này, hãy viết một ký tự đã nhập:

TEXT '' AS name

hoặc sử dụng dàn diễn viên:

CAST('' AS text) AS name

hoặc viết tắt của PostgreSQL:

''::text

ví dụ:

regress=> SELECT array_to_string(array_agg(TEXT ''), ',');
 array_to_string 
-----------------

(1 row)

regress=> SELECT array_to_string(array_agg(''::text), ',');
 array_to_string 
-----------------

(1 row)

regress=> SELECT array_to_string(array_agg(CAST('' AS text)), ',');
 array_to_string 
-----------------

(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tổng thứ bậc trong PostgreSQL

  2. Chèn toàn bộ giá trị của DataTable hàng loạt vào bảng postgreSQL

  3. Bằng cách nào đó để thực hiện `where booleanvalue =false` trên cả Sql Server và PostgreSQL?

  4. Về tính hữu dụng của các chỉ mục biểu thức

  5. Trong môi trường nhiều máy chủ, nếu một trang web không hoạt động trong hơn 15 triệu, máy chủ sẽ mất kết nối với cơ sở dữ liệu PostgreSQL