Rumah >pangkalan data >tutorial mysql >Mengapa Klausa SQL WHERE Saya Nampaknya Mengabaikan Parameter?

Mengapa Klausa SQL WHERE Saya Nampaknya Mengabaikan Parameter?

Barbara Streisand
Barbara Streisandasal
2025-01-19 10:11:09441semak imbas

Why Does My SQL WHERE Clause Seem to Ignore a Parameter?

Menyelesaikan masalah SQL WHERE Klausa: Menangani Parameter Overlook

Artikel ini menangani isu pertanyaan SQL biasa yang mana klausa WHERE nampaknya mengabaikan parameter tertentu. Pertimbangkan contoh ini:

<code class="language-sql">SELECT * FROM people 
WHERE
university='2' 
AND MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) 
OR (fname LIKE '%box%' OR lname LIKE '%box%') </code>

Pertanyaan ini, tanpa diduga, mengembalikan baris dengan university bukan '2'. Masalahnya terletak pada keutamaan pengendali dan susunan operasi.

Penyelesaian melibatkan penstrukturan semula klausa WHERE menggunakan kurungan untuk mengumpulkan syarat dengan betul:

<code class="language-sql">SELECT * FROM people 
WHERE
    university='2' 
    AND (MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) 
         OR fname LIKE '%box%' 
         OR lname LIKE '%box%')</code>

Dengan menyertakan syarat MATCH dan LIKE dalam kurungan, kami memastikan kedua-dua carian teks penuh dan syarat LIKE digunakan hanya pada baris dengan university = '2'. Operator AND kemudiannya mengehadkan keputusan dengan betul kepada yang memenuhi semua kriteria yang ditentukan. Struktur yang disemak ini menjamin hasil yang tepat berdasarkan penapisan parameter yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Klausa SQL WHERE Saya Nampaknya Mengabaikan Parameter?. 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