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?
WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'
Penyelesaian:
Sintaks di atas tidak sah. Fungsi yang sama boleh dicapai menggunakan pernyataan CASE:
WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END
Sebagai alternatif, pernyataan IF boleh digunakan, tetapi dalam prosedur tersimpan atau struktur aliran kawalan lain:
IF IsNumeric(@OrderNumber) = 1 BEGIN SELECT * FROM YourTable WHERE OrderNumber = @OrderNumber; END ELSE BEGIN SELECT * FROM YourTable WHERE OrderNumber LIKE '%' + @OrderNumber + '%'; END
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!