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

Operator tidak ada:integer =integer[] dalam kueri dengan APAPUN

Berdasarkan bagian pesan kesalahan operator does not exist: integer = integer[] , tampaknya bs kolom harus unnest ed, untuk mengembalikan sisi kanan ke integer sehingga operator perbandingan dapat ditemukan:

WITH bar AS (
  SELECT array_agg(b) AS bs
  FROM foo
  WHERE c < 3
)
SELECT a
FROM foo
WHERE b = ANY ( SELECT unnest(bs) FROM bar);

Ini menghasilkan output:

A
2
3

Diberikan dokumen untuk FUNGSI APA PUN :

... kesalahannya masuk akal, karena ekspresi sebelah kiri adalah integer -- kolom b -- sedangkan ekspresi tangan kanan adalah larik integer s, atau integer[] , dan perbandingannya berakhir dalam bentuk integer =integer[] , yang tidak memiliki operator, dan karena itu menghasilkan kesalahan.

unnest dengan integer[] value membuat ekspresi kiri dan kanan integer s, sehingga perbandingan dapat dilanjutkan.

Modifikasi SQL Fiddle .

Catatan: bahwa perilaku yang sama terlihat saat menggunakan IN bukannya = ANY .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize:Menanyakan apakah ARRAY berisi nilai

  2. Apakah PESSIMISTIC_WRITE mengunci seluruh tabel?

  3. pg_dump dengan pengguna jangan superadmin dan objek besar

  4. Bagaimana cara menambahkan wadah buruh pelabuhan ke jaringan buruh pelabuhan yang ada

  5. psql mengembalikan kode jika nol baris ditemukan