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

Lỗi cú pháp nhập không hợp lệ cho số nguyên đối với một số không phải là số nguyên?

Quá trình nhập của bạn không thành công với lỗi cú pháp trong Hàm tạo ARRAY thậm chí trước khi bạn truy cập vào độ phân giải loại hàm - nơi bạn sẽ nhận được nhiều thông báo lỗi hơn do các kiểu khác không khớp khi bạn loại bỏ hàm tạo ARRAY hoàn toàn không nên có trong lệnh gọi.

Giải pháp của bạn là chuyển các thông số riêng biệt của loại đối sánh , không một mảng. Phần còn lại chỉ là giải thích về những gì chúng tôi đã thấy.

Điều gì đã thực sự xảy ra

Một mảng chỉ có thể bao gồm các giá trị cùng loại, nhưng đầu vào của bạn sẽ trộn lẫn hằng số với chuỗi chữ , không thể giải quyết được.

Nếu bạn muốn nó chuyển thành text[] (mảng text ), bạn phải cung cấp các ký tự chuỗi như sau:

SELECT ARRAY['1004', '2', '1079412', 'WwLEA6XZ0'];

Hoặc một mảng ký tự trực tiếp, như vậy:

SELECT '{1004, 2, 1079412, WwLEA6XZ0}'::text[];

Nhưng khi bạn bắt đầu một hàm khởi tạo ARRAY với các hằng số, thì chỉ có các kiểu số là hợp pháp để thêm vào. Hoặc ít nhất chuỗi các ký tự có nội dung có thể bị ép buộc về cùng một loại. Bạn có thể :

SELECT ARRAY[1004, 2, 1079412, '1'];

... dẫn đến int[] . Hoặc:

SELECT ARRAY[1004, 2, 1079412, 1.0];

Hoặc thậm chí:

SELECT ARRAY[1004, 2, 1079412.0, '1.0'];

... cả hai đều dẫn đến numeric[] .

Nhưng ARRAY[1004, 2, 1079412, 'WwLEA6XZ0V'] là bất hợp pháp và đúng như vậy.

Bạn có thể tìm thấy các quy tắc chính xác về độ phân giải kiểu cho các trình tạo mảng trong chương này của sổ tay:" Loại Chuyển đổi "-" UNION, CASE và các cấu trúc có liên quan " . Hành trình của bạn kết thúc lúc:

Vì chuỗi ký tự 'WwLEA6XZ0V' không thể chuyển đổi thành integer .




  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ác công cụ ETL tốt nhất để chuyển sang PostgreSQL

  2. Nhận tổng khoảng thời gian từ nhiều hàng nếu chuỗi không bị hỏng

  3. Tham chiếu cột không rõ ràng trong INSERT ... ON CONFLICT DO UPDATE

  4. Tại sao các tác vụ Luồng không khí của tôi được xếp hàng đợi nhưng không chạy?

  5. rake db:tạo cơ sở dữ liệu ném không tồn tại lỗi với postgresql