Fasal WHERE bersyarat dalam SQL Server
Soalan:
Bagaimana untuk melaksanakan klausa WHERE bersyarat dalam SQL Server tanpa menggunakan SQL dinamik atau mencipta berbilang pertanyaan dengan klausa yang berbeza?
Jawapan:
Anda boleh menggunakan kaedah berikut:
<code class="language-sql">SELECT DateAppr, TimeAppr, TAT, LaserLTR, Permit, LtrPrinter, JobName, JobNumber, JobDesc, ActQty, (ActQty-LtrPrinted) AS L, (ActQty-QtyInserted) AS M, ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N FROM [test].[dbo].[MM] WHERE DateDropped = 0 AND ( (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0) OR (ISNULL(@JobsOnHold, 0) <> 1 AND DateAppr <> 0) )</code>
Dalam pertanyaan ini:
ISNULL()
menyemak sama ada parameter @JobsOnHold
kosong dan mengembalikan 0 jika kosong. @JobsOnHold
. Jika nilainya ialah 1, lajur DateAppr
mestilah lebih besar daripada atau sama dengan 0. Jika nilainya bukan 1, lajur DateAppr
mestilah tidak sama dengan 0. AND
memastikan kedua-dua syarat dipenuhi. Pendekatan ini membolehkan anda menggunakan pertanyaan tunggal dan klausa WHERE bersyarat untuk menapis hasil berdasarkan nilai parameter. Ini adalah cara yang lebih cekap dan ringkas untuk menulis pertanyaan sedemikian daripada menggunakan berbilang pertanyaan atau SQL dinamik.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Klausa WHERE Bersyarat dalam Pelayan SQL Tanpa SQL Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!