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

Cập nhật cột số nguyên từ thành viên jsonb không thành công với:cột thuộc loại số nguyên nhưng biểu thức thuộc loại jsonb

Một lệnh SQL dựa trên một tập hợp duy nhất hiệu quả hơn nhiều so với lặp:

UPDATE words_social w
SET    social = (iu->>'social')::int
FROM   JSONB_ARRAY_ELEMENTS(in_users) iu  -- in_user = function variable
WHERE  w.sid = iu->>'sid';                -- type of sid?

Để trả lời câu hỏi ban đầu của bạn:

Vì bạn đang cố chuyển đổi jsonb giá trị thành integer . Trong giải pháp của bạn, bạn đã thấy rằng bạn cần ->> toán tử thay vì -> để trích xuất văn bản text , có thể được truyền thành integer .

Lần thử thứ hai của bạn đã thêm một lỗi thứ hai:

t->'social'::int

Ngoài các điều trên: ưu tiên toán tử . Toán tử truyền :: liên kết mạnh hơn toán tử json -> . Giống như bạn đã tìm thấy chính mình, bạn thực sự muốn:

(t->>'social')::int

Trường hợp tương tự trên dba.SE:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Biến ràng buộc cho tên cột trong PHP cho truy vấn Postgresql

  2. Sự cố khi kết nối Pentaho Kettle / Spoon với Heroku PostgreSQL bằng SSL

  3. Những điều quan trọng cần theo dõi trong PostgreSQL - Phân tích khối lượng công việc của bạn

  4. findById () cung cấp Không tìm thấy Id thuộc tính

  5. Công bố Barman 1.0, Trình quản lý sao lưu và phục hồi cho PostgreSQL