PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Memperbarui kolom integer dari anggota jsonb gagal dengan:kolom bertipe integer tetapi ekspresi bertipe jsonb

Perintah SQL berbasis set tunggal jauh lebih efisien daripada looping:

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?

Untuk menjawab pertanyaan awal Anda:

Karena Anda mencoba mengonversi jsonb nilai ke integer . Dalam solusi Anda, Anda sudah menemukan bahwa Anda memerlukan ->> operator alih-alih -> untuk mengekstrak text , yang dapat dilemparkan ke integer .

Upaya kedua Anda menambahkan kesalahan kedua:

t->'social'::int

Selain yang di atas:diutamakan operator . Operator pemeran :: mengikat lebih kuat dari operator json -> . Seperti Anda sudah menemukan diri Anda, Anda benar-benar ingin:

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

Kasus yang sangat mirip di 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. Bagaimana menemukan hubungan dari Snomed Postgres Sql Database

  2. Fungsi Escape untuk ekspresi reguler atau pola LIKE

  3. Masalah pembulatan yang aneh

  4. PostgreSQL:format interval sebagai menit

  5. Penggabungan Koneksi PostgreSQL:Bagian 3 – Pgpool-II