Pertanyaan SQL sering menggunakan klausa "WHERE" untuk menapis hasil berdasarkan syarat tertentu. Walau bagaimanapun, kadangkala anda mungkin menghadapi penggunaan luar biasa: keadaan "WHERE 1=1" yang dilampirkan pada permulaan klausa "WHERE".
Sebab menggunakan "WHERE 1=1":
Syarat "1=1" bertindak sebagai pemegang tempat dan klausa "WHERE" kekal sah walaupun tiada syarat lain dinyatakan. Ini membolehkan pertanyaan dibina secara dinamik, terutamanya apabila senarai kriteria tidak diketahui terlebih dahulu. Pertanyaan tidak perlu menyemak sama ada wujud sebarang syarat, cuma tambahkan syarat yang diperlukan pada pernyataan "DAN".
Contoh:
<code class="language-sql">SELECT * FROM table WHERE 1=1 AND condition1 AND condition2 AND condition3;</code>
bukan kaedah perlindungan suntikan SQL:
Walaupun ini adalah salah tanggapan biasa, binaan ini tidak berkesan dalam mencegah serangan suntikan SQL. Ini kerana sebarang input berniat jahat yang disuntik masih akan dilampirkan pada pernyataan "DAN", yang berpotensi membawa kepada hasil yang tidak dijangka atau bahkan manipulasi data.
penggunaan dalam definisi paparan:
Keadaan "WHERE 1=1" juga boleh digunakan dalam definisi paparan sebagai teknik pengoptimuman prestasi. Oleh kerana keadaan "1=1" sentiasa dinilai kepada benar, enjin pertanyaan boleh menggunakannya untuk melangkau pengiraan yang tidak perlu. Ini boleh mempercepatkan pelaksanaan pertanyaan, terutamanya dalam paparan kompleks yang melibatkan berbilang gabungan.
Contoh:
<code class="language-sql">CREATE VIEW my_view AS SELECT * FROM table WHERE 1=1 AND field1 = 'value';</code>
Walau bagaimanapun, adalah penting untuk mengelak daripada menggunakan syarat "WHERE 1=1" dalam prosedur tersimpan atau senario lain di mana senarai syarat diketahui. Dalam kes ini, adalah lebih cekap dan selamat untuk menentukan syarat secara langsung dalam klausa "WHERE" tanpa ruang letak.
Atas ialah kandungan terperinci Mengapa Gunakan 'WHERE 1=1' dalam Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!