Mencari Nilai Berangka Terdekat dalam Pangkalan Data
Bayangkan situasi di mana anda memerlukan pertanyaan pangkalan data untuk mendapatkan rekod tepat yang sepadan dengan input anda atau , jika tiada padanan tepat, anggaran terdekat. Sebagai contoh, katakan anda memiliki data dengan medan 'Saiz' yang sepadan dengan nilai tertentu (cth., 2) dan medan 'Kawasan' yang mengandungi nilai berangka yang berbeza-beza.
Pertimbangkan pertanyaan berikut:
SELECT * FROM [myTable] WHERE Name = 'Test' AND Size = 2 AND PType = 'p' ORDER BY Area DESC
Hasil yang dimaksudkan adalah untuk pertanyaan mengenal pasti rekod yang betul-betul sepadan dengan input anda ("Ujian" untuk medan 'Nama', 2 untuk medan 'Saiz' dan 'p' untuk medan 'PType'), mengutamakan medan 'Kawasan' dalam susunan menurun. Walau bagaimanapun, jika tiada padanan tepat wujud, anda berusaha untuk mendapatkan semula rekod yang nilai 'Kawasan'nya paling hampir dengan input anda.
Untuk mencapai ini, gunakan pertanyaan yang diubah suai berikut:
SELECT TOP 1 * FROM [myTable] WHERE Name = 'Test' and Size = 2 and PType = 'p' ORDER BY ABS( Area - @input )
Pertanyaan yang disemak ini menggabungkan fungsi ABS(), yang mengira nilai mutlak perbezaan antara medan 'Kawasan' dan input yang anda tentukan. Klausa ORDER BY menyusun keputusan dalam tertib menaik berdasarkan nilai mutlak perbezaan, memastikan rekod dengan perbezaan terkecil (oleh itu nilai berangka yang paling hampir dengan input anda) diperoleh.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Berangka Terdekat dalam Pertanyaan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!