Yang Sukar <=> Operator dalam MySQL
MySQL mempersembahkan pengendali unik, <=>, yang boleh mengelirukan pembangun yang tidak biasa dengan tujuan misterinya. Walaupun ia mempunyai persamaan dengan tanda sama rata konvensional (=), ia mempunyai kepentingan yang istimewa dalam mengendalikan nilai NULL.
Perbandingan Null-Safe
Tidak seperti rakan sejawatannya, < => memastikan hasil perbandingan yang konsisten, tanpa mengira kehadiran nilai NULL. Daripada menghasilkan NULL, ia mentafsirkan NULL sebagai nilai khusus, membolehkan perbandingan yang boleh dipercayai antara lajur yang berpotensi mengandungi NULL.
Pengoptimuman Kod dan Penyata Disediakan
<=> terbukti amat berguna dalam pengoptimuman kod. Ambil, sebagai contoh, pernyataan yang disediakan berikut:
... WHERE col_a <=> ? ...
Penyataan ini mengendalikan ruang letak sebagai sama ada nilai skalar atau NULL tanpa memerlukan pengubahsuaian pertanyaan.
Operator Alternatif
MySQL menawarkan pengendali tambahan yang disesuaikan untuk NULL perbandingan:
Pengendali ini bertindak sebagai versi khusus bagi <=>, menyatakan hasrat anda dengan lebih jelas.
Transformasi Pertanyaan untuk Kemudahalihan
Untuk meningkatkan kemudahalihan merentas platform, pertanyaan anda boleh diubah menjadi yang berikut:
WHERE p.name IS NULL
Sejagat Sokongan
Sementara MySQL <=> kekal khusus platform, standard SQL:2003 memperkenalkan predikat yang serupa:
IS [NOT] DISTINCT FROM
Predikat ini beroperasi secara serupa dengan <=>, walaupun dengan sokongan yang lebih luas. Untuk keserasian universal, ungkapan kompleks berikut juga boleh digunakan:
CASE WHEN (a = b) or (a IS NULL AND b IS NULL) THEN 1 ELSE 0 END = 1
Atas ialah kandungan terperinci Bagaimanakah Operator `` MySQL Mengendalikan Nilai NULL dalam Perbandingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!