Bagaimana untuk menyelesaikan perangkap 0 penghakiman nilai dalam Mysql

PHPz
Lepaskan: 2023-05-29 12:01:26
ke hadapan
1386 orang telah melayarinya

    Perangkap Mysql mengenai 0 pertimbangan nilai

    Baru-baru ini menghadapi masalah Mysql mengembalikan berbilang nilai, dan akhirnya mendapati ia dinilai dengan 0 nilai dalam mysql soalan syarat penapis.

    Soalan ringkas adalah seperti berikut

    Terdapat medan INT a, nilai lalai ialah 0, dan syarat penghakiman yang diluluskan oleh atur cara ialah a = 'abacd'.

    Input ialah rentetan dan semua data dengan a=0 dikembalikan.

    Sebab

    MySQL akan membuat pertimbangan logik Jika ia adalah penghakiman integer, tetapi input adalah rentetan, jika rentetan itu bukan nombor, rentetan itu akan ditukar kepada 0. Oleh itu, keadaan sebenar yang dinilai oleh kod ini

    ialah a = 0.

    Penyelesaian

    Apabila membuat pertimbangan logik dalam MySQL, anda harus memastikan bahawa nilai masuk adalah konsisten dengan jenis medan, iaitu medan integer harus menilai integer dan medan rentetan harus menilai rentetan. Apabila pertimbangan jenis silang mesti dibuat, pelarasan yang sesuai perlu dibuat berdasarkan logik perniagaan untuk mengelakkan masalah.

    Pelanjutan masalah

    Jika medan a adalah daripada jenis varchar dan nilainya ialah 0, maka a='0' hendaklah digunakan untuk penghakiman dan bukannya a = 0 untuk alasan yang sama seperti di atas, rentetan akan ditukar kepada 0, dan hasil akhir ialah 0 = 0.

    Ringkasan salah faham Mysql dalam menilai nilai 0

    Dalam MySQL, apabila medan jadual data adalah jenis int, anda boleh menilai sama ada medan itu 0, dan tidak akan ada masalah. Jika ia adalah jenis char atau varchar, anda perlu menggunakan '0' Jelas sekali, rentetan dan integer adalah tidak bersamaan. Jadi jangan buat kesilapan bodoh itu.

    Berikut ialah prinsip carian mysql yang terdapat di Internet:

    mysql akan terlebih dahulu menukar nilai medan kepada integer dan kemudian membandingkannya.

    Jika digit pertama medan ialah rentetan, maka ia akan ditukar kepada integer dan ia akan menjadi 0.

    Secara amnya, petikan diperlukan semasa mencari rentetan.

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan perangkap 0 penghakiman nilai dalam Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    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
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan