Rumah > Artikel > pangkalan data > Bagaimana untuk Mengisih Nombor Versi MySQL yang Disimpan sebagai `varbinary(300)`?
Isih Nombor Versi MySQL
Apabila menyimpan nombor versi sebagai varbinary(300) dalam MySQL, menyusunnya menggunakan susunan lalai mengikut version_number mungkin menghasilkan keputusan yang tidak betul. Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan fungsi INET_ATON untuk memudahkan pengisihan.
Pertanyaan yang diubah suai:
SELECT version_number FROM table ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
Teknik ini bergantung pada fungsi INET_ATON untuk menukar rentetan yang mewakili alamat IP kepada angka perwakilan. Dengan menggabungkan '.0.0.0' kepada version_number, kami memastikan bahawa setiap nombor versi mempunyai sekurang-kurangnya empat komponen, yang kemudiannya kami gunakan SUBSTRING_INDEX untuk diekstrak.
Dengan mengisih berdasarkan perwakilan berangka bagi empat komponen pertama setiap nombor versi, kami mencapai susunan pengisihan yang diingini. Walau bagaimanapun, ambil perhatian bahawa memandangkan pengisihan ini bergantung pada fungsi, ia mungkin dikenakan penalti prestasi berbanding dengan mengisih terus pada lajur dengan indeks.
Penyelesaian lain, yang dicadangkan oleh @spanky, melibatkan pengasingan komponen nombor versi ke dalam lajur individu. Contohnya, buat lajur untuk versi major, minor, patch dan build. Pendekatan ini membolehkan pengisihan yang cekap pada komponen tertentu, tetapi mungkin memerlukan manipulasi data yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Nombor Versi MySQL yang Disimpan sebagai `varbinary(300)`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!