Terdapat umur medan dalam mysql, yang menyimpan kumpulan umur Format seperti yang ditunjukkan dalam gambar. Keperluan semasa adalah untuk mencari berdasarkan kumpulan umur Sebagai contoh, saya ingin mencari semua data antara umur 25-34. Maka inilah masalahnya Jika anda menggunakan dan di mana, anda akan mendapat hasil yang sangat sedikit, hampir tiada jika anda menggunakan atau, hasilnya akan menjadi lebih banyak, tetapi jelas hasilnya tidak tepat. Bagaimana untuk mencarinya dengan tepat
Terima kasih semua atas jawapan anda Kaedah yang saya gunakan sekarang ialah
PILIH umur DARIWHERE ((substring_index(umur,'-',1) >= 16 ATAU substring_index(umur,'-',-1) = 0) ATAU (substring_index(umur,'-',- 1) <= 24)) DAN !(substring_index(umur,'-',1) = 0 DAN substring_index(umur,'-',-1) = 0);
jobs
Ia hampir tidak berfungsi, tetapi ada sesuatu yang terasa pelik
Ikut kata awak, kalau 30-55 sepadan 25-34 boleh jadi macam ni
Ini sukar untuk dinilai Adakah 30-55 memenuhi syarat 25-34 yang anda mahukan? Atau adakah ia mesti dalam 25-34? Ia bergantung pada keperluan khusus anda
Saya sangat ingin tahu mengapa struktur jadual data direka seperti ini. Mengapa ia tidak menyimpan umur? Jika struktur jadual direka bentuk seperti ini, mengapa kita perlu mengambil data antara 25-34 tahun? Umur anda hanyalah julat tertentu, bukan nilai khusus Anda harus mereka bentuk semula struktur jadual anda dan jangan tersilap tersilap
1 Jika anda menyimpan kumpulan umur seperti ini, adakah anda perlu membuat satu lagi kunci untuk membezakan jangka umur?
2. Tangkapan skrin juga menunjukkan reka bentuk span seperti 1-5, 2-6, dan 3-4 Jika pengguna memilih 3, yang manakah harus dia pilih?
Ramai orang yang tidak memahami fungsi terbina dalam MySQL memberikan arahan rawak kepada orang lain
Punca masalah ialah reka bentuk pangkalan data tidak munasabah
Adalah disyorkan agar anda menggunakan pemikiran abstrak untuk memikirkan kembali: fikirkan maklumat yang disimpan dalam medan umur dalam jadual sebagai set A, dan fikirkan keadaan di mana sebagai set C. Apakah situasi yang perlu dicapai oleh keputusan akhir anda?
Set A dan set C mempunyai persimpangan
Set A ialah subset set C
Set C sendiri adalah set C
Maka atas dasar ini, struktur jadual semasa anda pasti tidak sesuai Jika jumlah data tidak besar, anda boleh membersihkan data di luar talian dan membahagikan medan umur kepada had bawah dan had atas, dan kemudian lakukan kaedah penapisan pengumpulan Itu. banyak.
Struktur jadual anda tidak dapat mencapai fungsi yang anda nyatakan