Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Penyata IF dalam MS SQL WHERE Klausa?
Menggunakan pernyataan IF dalam klausa MS SQL WHERE
Adakah mungkin untuk membenamkan pernyataan IF dalam klausa WHERE MS SQL? Sebagai contoh, adakah sintaks berikut sah?
<code class="language-sql">WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'</code>
Penyelesaian:
Sintaks di atas tidak sah. Fungsi yang sama boleh dicapai menggunakan pernyataan CASE:
<code class="language-sql">WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END</code>
Sebagai alternatif, pernyataan IF boleh digunakan, tetapi dalam prosedur tersimpan atau struktur aliran kawalan lain:
<code class="language-sql">IF IsNumeric(@OrderNumber) = 1 BEGIN SELECT * FROM YourTable WHERE OrderNumber = @OrderNumber; END ELSE BEGIN SELECT * FROM YourTable WHERE OrderNumber LIKE '%' + @OrderNumber + '%'; END</code>
Perlu diambil perhatian bahawa menggunakan pernyataan IF secara langsung dalam klausa WHERE tidak dibenarkan. Pernyataan CASE menyediakan cara yang lebih ringkas dan patuh SQL untuk mengendalikan logik bersyarat. Jika anda perlu menggunakan pernyataan IF, anda mesti meletakkannya dalam prosedur tersimpan atau persekitaran lain yang membenarkan pernyataan aliran kawalan.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Penyata IF dalam MS SQL WHERE Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!