Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Penyata IF dalam MS SQL WHERE Klausa?

Bolehkah saya Menggunakan Penyata IF dalam MS SQL WHERE Klausa?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 06:49:42746semak imbas

Can I Use IF Statements in MS SQL WHERE Clauses?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn