Rumah >pangkalan data >tutorial mysql >Mengapa Klausa SQL WHERE Saya Memadankan Rentetan dengan Ruang Jejak?

Mengapa Klausa SQL WHERE Saya Memadankan Rentetan dengan Ruang Jejak?

Linda Hamilton
Linda Hamiltonasal
2024-12-31 17:25:12136semak imbas

Why Does My SQL WHERE Clause Match Strings with Trailing Spaces?

Trailing Spaces dan SQL WHERE Klausa Padanan

Dalam SQL, klausa WHERE mendayakan penapisan data berdasarkan syarat yang ditentukan. Apabila memadankan nilai, memahami cara ruang dikendalikan adalah penting.

Dalam senario yang disediakan, pertanyaan digunakan untuk memilih ZoneReferences daripada jadual Zone dengan nilai ZoneReference yang ditentukan. Hasilnya secara tidak dijangka mengandungi ruang belakang, menimbulkan kebimbangan tentang kesahihan data.

Tingkah laku yang dihadapi adalah konsisten dengan tafsiran SQL Server terhadap klausa WHERE. Spesifikasi ANSI/ISO SQL-92 menentukan bahawa ruang belakang diabaikan semasa perbandingan. Padding digunakan untuk menyamakan panjang rentetan sebelum melakukan perbandingan, memastikan bahawa 'abc' dan 'abc ' dianggap setara.

Peraturan ini berlaku untuk kebanyakan operasi perbandingan, tetapi ia tidak berkenaan dengan predikat LIKE. Predikat LIKE direka bentuk untuk carian corak dan ruang mengekor di sebelah kanan tidak diabaikan.

Untuk mengelakkan kekeliruan, anda disyorkan untuk sentiasa memastikan medan data dipangkas dengan sewajarnya untuk menghapuskan ruang mengekor dan mencapai ketepatan hasil perbandingan.

Atas ialah kandungan terperinci Mengapa Klausa SQL WHERE Saya Memadankan Rentetan dengan Ruang Jejak?. 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