Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL Saya Padan dengan Ruang Jejak Walaupun Menggunakan Operator Kesamaan?

Mengapa Pertanyaan SQL Saya Padan dengan Ruang Jejak Walaupun Menggunakan Operator Kesamaan?

Susan Sarandon
Lepaskan: 2025-01-04 14:14:38
asal
131 orang telah melayarinya

Why Does My SQL Query Match with a Trailing Space Despite Using the Equality Operator?

Terperangkap oleh Trailing Spaces: A SQL Comparison Conundrum

Pertimbangkan pertanyaan SQL berikut, di mana kami cuba memadankan nilai dalam jadual Zon :

select '"' + ZoneReference + '"' as QuotedZoneReference
from Zone
where ZoneReference = 'WF11XU'
Salin selepas log masuk

Kami terkejut, keputusan menunjukkan ketinggalan yang tidak dijangka ruang:

"WF11XU "
Salin selepas log masuk

Walaupun ruang kosong mengekori, SQL Server mengembalikan padanan, membuatkan kami terpinga-pinga.

Tingkah laku yang kelihatan berlawanan dengan intuitif ini boleh dijelaskan dengan menyelami piawaian yang membimbing perbandingan rentetan SQL Server . Mengikut spesifikasi ANSI/ISO SQL-92, SQL Server pad rentetan aksara yang digunakan dalam perbandingan untuk memastikan ia mempunyai panjang yang sama sebelum melakukan semakan. Peraturan ini meliputi kebanyakan operasi perbandingan, menjadikan rentetan seperti 'abc' dan 'abc ' setara untuk perbandingan rentetan.

Walau bagaimanapun, pengecualian kepada peraturan ini ialah predikat LIKE. Hanya apabila pengendali LIKE terlibat, SQL Server menahan diri daripada berlapik. Perbezaan ini berpunca daripada tujuan utama predikat LIKE untuk pemadanan corak dan bukannya ujian kesamaan rentetan langsung.

Dalam kes kami, memandangkan kami menggunakan operator kesamarataan mudah (=), ruang belakang dipertimbangkan oleh SQL Server , membawa kepada perlawanan yang berjaya. Jika niat kami adalah untuk mencari padanan tepat, kami boleh menggunakan predikat LIKE, yang akan mengabaikan ruang belakang dan memberikan hasil yang lebih tepat.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Padan dengan Ruang Jejak Walaupun Menggunakan Operator Kesamaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan