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

JavaScript (Postgres DB) - Cara menggunakan pernyataan yang disiapkan dengan array sebagai parameter dalam klausa WHERE IN ( )

Ini dijelaskan dalam FAQ node-postgres https://github.com/brianc/node-postgres/wiki/FAQ#11-how- do-i-build-a-where-foo-in--query-to-find-rows-matching-an-array-of-values

Bagaimana cara membuat kueri WHERE foo IN (...) untuk menemukan baris yang cocok dengan larik nilai?node-postgres mendukung pemetaan larik JavaScript sederhana ke larik PostgreSQL, jadi dalam banyak kasus Anda bisa meneruskannya seperti yang lain parameter.

client.query("SELECT * FROM stooges WHERE name = ANY ($1)", [ ['larry', 'curly', 'moe'] ], ...);

Perhatikan bahwa =ANY adalah cara lain untuk menulis IN (...), tetapi tidak seperti IN (...) ini akan bekerja seperti yang Anda harapkan ketika Anda melewatkan array sebagai parameter kueri.

Jika Anda mengetahui panjang array sebelumnya, Anda dapat meratakannya menjadi daftar IN:

// passing a flat array of values will work:
client.query("SELECT * FROM stooges WHERE name IN ($1, $2, $3)", ['larry', 'curly', 'moe'], ...);

... tapi ada sedikit manfaat ketika =ANY bekerja dengan larik JavaScript.

Jika Anda menggunakan node-postgres versi lama atau Anda perlu membuat array PostgreSQL yang lebih kompleks (array tipe komposit, dll) yang tidak dapat diatasi oleh node-postgres, Anda dapat membuat array literal dengan SQL dinamis, tetapi berhati-hatilah dengan injeksi SQL saat melakukan ini. Pendekatan berikut aman karena menghasilkan string kueri dengan parameter kueri dan daftar parameter yang diratakan, jadi Anda masih menggunakan dukungan driver untuk kueri berparameter ("pernyataan yang disiapkan") untuk melindungi dari injeksi SQL:

var stooge_names = ['larry', 'curly', 'moe'];
var offset = 1;
var placeholders = stooge_names.map(function(name,i) { 
    return '$'+(i+offset); 
}).join(',');
client.query("SELECT * FROM stooges WHERE name IN ("+placeholders+")", stooge_names, ...);

Semoga membantu karena google gagal menemukan ini




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai offset zona waktu server

  2. Buat bilangan bulat besar dari ujung besar uuid di PostgreSQL

  3. Masukkan data ke Postgresql dengan nilai duplikat

  4. Pemicu PostgreSQL untuk menghasilkan kode untuk beberapa tabel secara dinamis

  5. SQLAlchemy beberapa kunci asing dalam satu kelas yang dipetakan ke kunci utama yang sama