Misteri Penukaran Rentetan-ke-Nombor MySQL: Mengapa 'String' = 0 Kembali Benar
Apabila membandingkan lajur rentetan kepada 0, a keputusan yang mengejutkan berlaku: ia menilai kepada benar. Tingkah laku yang tidak dijangka ini berpunca daripada mekanisme penukaran jenis tersirat MySQL.
MySQL secara automatik menukar rentetan kepada nombor berdasarkan peraturan berikut:
Dalam kes 'rentetan' = 0, kerana rentetan tidak bermula dengan nombor, ia dinilai sebagai 0. Penukaran ini menyebabkan perbandingan menjadi '0' = 0, yang benar.
Walau bagaimanapun, apabila membandingkan rentetan dengan nombor bukan sifar atau rentetan, tiada penukaran berlaku. Akibatnya, 'string' = -12 atau 'string' = '0' dinilai kepada palsu seperti yang dijangkakan.
Untuk mengatasi kelakuan lalai ini, anda boleh memaksa penukaran kepada jenis data tertentu menggunakan operator. Sebagai contoh, '0string' 0 menukar rentetan '0string' kepada nombor, menjadikan perbandingan '0' = '0' sah.
Mekanisme penukaran ini juga boleh digunakan untuk melakukan operasi aritmetik pada rentetan yang mengandungi nombor . Contohnya, '1abc' '2ef' akan menukar rentetan kepada nombor dan menjumlahkannya, menghasilkan 3.
Memahami gelagat penukaran jenis ini adalah penting untuk mengelakkan keputusan yang tidak dijangka dalam pertanyaan MySQL. Dengan memanfaatkan pengendali untuk mengawal penukaran secara eksplisit, anda boleh memastikan perbandingan dan pengiraan anda adalah tepat.
Atas ialah kandungan terperinci Mengapa 'String' = 0 Kembali Benar dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!