Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Kad Liar dengan Pernyataan yang Disediakan dalam SQL untuk Pencarian Cekap dengan Selamat?

Bagaimanakah Saya Boleh Menggunakan Kad Liar dengan Pernyataan yang Disediakan dalam SQL untuk Pencarian Cekap dengan Selamat?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 18:52:171003semak imbas

How Can I Safely Use Wildcards with Prepared Statements in SQL for Efficient Searching?

Menggunakan Kad Liar dalam Penyata Disediakan untuk Fungsi Carian

Apabila melaksanakan ciri carian menggunakan kata kunci sebagai parameter carian, ia menjadi perlu untuk menggunakan kata kunci LIKE dalam SQL. Walau bagaimanapun, menyepadukan LIKE dengan pernyataan yang disediakan boleh menjadi agak rumit.

Dalam contoh yang disediakan:

PreparedStatement pstmt = con.prepareStatement(
      "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);

Pemegang tempat (?) dalam rentetan SQL mewakili parameter yang akan ditetapkan dengan kata kunci LIKE. Dalam kes ini, kata kunci% hendaklah dilampirkan pada nilai yang diberikan kepada parameter pemegang tempat.

Penyelesaian:

Untuk menggunakan LIKE dengan disediakan kenyataan, kad bebas ('%') hendaklah ditetapkan terus dalam nilai itu sendiri, bukan dalam rentetan SQL. Ini boleh dilakukan dengan menambahkan kad bebas pada nilai apabila menetapkan parameter:

pstmt.setString(1, notes + "%");

Jika padanan awalan diperlukan, kad bebas hendaklah diletakkan pada permulaan nilai:

pstmt.setString(1, "%" + notes);

Untuk perlawanan global, wildcard hendaklah diletakkan pada kedua-dua hujung nilai:

pstmt.setString(1, "%" + notes + "%");

Adalah penting untuk ambil perhatian bahawa istimewa aksara dalam nilai, seperti %, _, [, dan !, perlu dilepaskan untuk mengelakkan konflik dengan penggunaannya sebagai kad bebas dalam klausa LIKE. Contoh yang diberikan dalam respons menangani isu ini dengan secukupnya dengan menggantikan aksara ini dengan urutan melarikan diri sebelum menetapkan parameter.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kad Liar dengan Pernyataan yang Disediakan dalam SQL untuk Pencarian Cekap dengan Selamat?. 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