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

Mengirim array nilai ke kueri sql di Ruby?

PostgreSQL mendukung larik SQL standar dan standar any op (...) sintaks:

Itu berarti Anda dapat membangun SQL seperti ini:

where name ilike any (array['%Richard%', '%Feynman%'])

Itu bagus dan ringkas jadi bagaimana kita membuat Rails membangun ini? Itu sebenarnya cukup mudah:

Model.where('name ilike any (array[?])', names.map { |s| "%#{s}%" })

Tidak perlu mengutip manual, ActiveRecord akan mengonversi larik menjadi daftar yang dikutip/diloloskan dengan benar ketika mengisi ? tempat penampung di.

Sekarang Anda hanya perlu membuat names Himpunan. Sesuatu yang sederhana seperti ini harus dilakukan:

fields = params.keys.select { |k| k.to_s =~ /\Afield\d+\z/ }
names  = params.values_at(*fields).select(&:present)

Anda juga dapat mengonversi 'a b' single tunggal masukan ke 'a', 'b' dengan melemparkan split dan flatten ke dalam campuran:

names = params.values_at(*fields)
              .select(&:present)
              .map(&:split)
              .flatten


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Kasus String di PostgreSQL

  2. Mendeklarasikan struktur Tuple dari sebuah record di PL/pgSQL

  3. Cara Bekerja Dengan Database PostgreSQL

  4. PostgreSQL JDBC Null String diambil sebagai byte

  5. Bagaimana cara mengimpor potongan data * besar * ke PostgreSQL?