Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Melewati nama kolom sebagai parameter di MySQL

Sejauh melewati nama kolom sebagai parameter di MySQL (pertanyaan dalam judul), itu tidak mungkin dalam pernyataan SQL. Identifier dalam pernyataan SQL (misalnya nama tabel dan nama kolom) harus menjadi bagian dari teks SQL. Itu tidak dapat diteruskan dengan placeholder bind.

IN operator perbandingan mengharapkan daftar nilai yang diapit oleh parens, atau kueri SELECT yang diapit oleh parens yang mengembalikan sekumpulan nilai.

Tidak jelas apa yang Anda coba lakukan.

Saya menduga bahwa template_allowed_parent_templates adalah kolom dalam tabel, dan berisi daftar nilai yang dipisahkan koma. (bergidik.)

Saya menduga Anda mungkin mencari MySQL FIND_IN_SET fungsi string, yang akan "mencari" daftar yang dipisahkan koma untuk nilai tertentu.

Sebagai demonstrasi sederhana:

  SELECT FIND_IN_SET('5', '2,3,5,7')
       , FIND_IN_SET('4', '2,3,5,7')

Fungsi mengembalikan bilangan bulat positif ketika nilai yang ditentukan "ditemukan". Anda dapat menggunakan fungsi itu dalam predikat, mis.

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

atau

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Ini berfungsi karena di MySQL bilangan bulat positif dievaluasi sebagai TRUE dalam konteks boolean.)

Saya hanya menebak apa yang ingin Anda capai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hubungkan MySQL dengan Python 3.6

  2. MYSQL:Pengguna - pengaturan tabel detail profil - praktik terbaik

  3. Kueri SQL dari beberapa nilai dalam satu sel

  4. Format PHP date() saat memasukkan ke datetime di MySQL

  5. SQL Performance UNION vs OR