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

Cari array posting dalam nilai kolom yang dipisahkan koma

Solusi 1:

Seperti yang dikomentari @Jens, ini adalah desain DB yang buruk untuk menyimpan nilai sebagai CSV. Jadi solusi pertama adalah mengubah desain DB Anda karena saya tidak begitu tahu apa yang Anda simpan dan apa tujuan dari DB/kode Anda. tidak dapat menulis skema atau memberikan saran yang berarti.

Solusi 2:

Gunakan find_in_set fungsi.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Solusi 3:

Anda dapat menggunakan LIKE operator. (Beberapa anggota mungkin akan membunuh saya karena menyarankannya, tetapi jika Anda tidak ingin mengubah desain DB Anda - ini adalah opsi kreatif).

Mari kita periksa kode berikut:

SELECT id FROM table WHERE filter_data LIKE '%2,%'

Masalahnya adalah ia akan mengembalikan id bidang dengan 22, di kolom filter_data. Oleh karena itu, Anda harus mengubah data di bawah kolom itu jadi , akan muncul juga sebagai karakter pertama dan terakhir. Misalnya:

id | filter_data   |
---|---------------
1  |,2,3,45,67,4,  |
2  |,2,3,55,33,5,7,|

Dan sekarang Anda dapat melakukan hal berikut:

SELECT id FROM table WHERE filter_data LIKE '%,2,%'

Jika Anda memiliki beberapa "filter pencarian", Anda dapat menggabungkan LIKE s dengan ATAU operator.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL – FOUND_ROWS() Fungsi untuk Jumlah Baris yang Terpengaruh

  2. Bisakah saya memasukkan kata sandi sekali untuk beberapa permintaan baris perintah mysql, di mana kueri tidak diketahui di muka?

  3. MySQL:bagaimana cara menjatuhkan banyak tabel menggunakan satu kueri?

  4. Tetapkan opsi default di dropdown php dan pertahankan saat mengirimkan kueri

  5. Memantau Percona XtraDB Cluster - Metrik Utama