Saya mempunyai projek Spring Boot baharu dengan SQL Server dan saya perlu menggantikan pertanyaan asli MySQL pada kaedah repositori dalam projek lama dengan pertanyaan asli SQL Server. Ini adalah pertanyaan kompleks di mana keadaan adalah kes apabila ekspresi. Apabila saya cuba menguji pertanyaan dalam SQL Server Management Studio, ia memaparkan ralat seperti yang ditunjukkan dalam imej di bawah. Masukkan penerangan imej di sini
Ini adalah pertanyaan asli lama saya menggunakan MySQL pada kaedah repositori dan saya mahu menggantikannya dengan SQL Server Masukkan penerangan imej di sini Tolong bantu saya mencari penyelesaian. Terima kasih terlebih dahulu! !
Ini adalah perkara yang anda ada dan perkara yang perlu anda siarkan sebagai teks dalam soalan anda. Sebagai teks, ia boleh dicari dan disalin oleh seseorang yang cuba membantu anda.
CASE ialah ungkapan dalam TSQL. Ia bukan binaan kawalan aliran seperti kebanyakan bahasa lain. Untuk menggunakan penapis "pilihan", anda perlu menggunakan CASE untuk membina ungkapan boolean yang mengendalikan atribut "pilihan" dengan betul. Biasanya, ini boleh dilakukan dengan lebih canggih menggunakan CASE, seperti ini:
Jadi CASE digunakan di sini untuk mengembalikan nilai yang boleh diuji dalam perbandingan. Tiada apa-apa yang ajaib tentang menggunakan 0 atau 1. Gunakan sebarang nilai dalam apa jua jenis.
Jadi apabila ungkapan CASE mengembalikan 0 (bukan sebenarnya 1), baris diabaikan (dialih keluar daripada set hasil).
Memandangkan pertanyaan anda sebenarnya dibina dalam aplikasi, anda harus mempertimbangkan untuk membina pertanyaan secara dinamik dan menambah parameter mengikut keperluan. Ini mungkin menghasilkan pertanyaan yang lebih cekap yang boleh dioptimumkan oleh enjin pangkalan data dengan lebih baik. Sebagai alternatif, anda boleh menyemak Perbincangan Sinki Dapur ini dan perbincangan Erland tentang Kriteria Carian Dinamik. TBH kelihatan seperti seseorang menggunakan
@num
sebagai tampalan untuk mengelakkan penambahan parameter untuk lapan nilai penapis tertentu. Jika saya ingin menapis kedua-dua nama pedagang dan nama kedai, saya tidak boleh menggunakan kaedah ini.