"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية فرز أرقام إصدارات MySQL المخزنة كـ "varbinary(300)"؟

كيفية فرز أرقام إصدارات MySQL المخزنة كـ "varbinary(300)"؟

تم النشر بتاريخ 2024-11-15
تصفح:201

How to Sort MySQL Version Numbers Stored as `varbinary(300)`?

فرز رقم إصدار MySQL

عند تخزين أرقام الإصدارات كمتغير (300) في MySQL، قد يؤدي فرزها باستخدام الترتيب الافتراضي حسب رقم الإصدار إلى نتائج نتائج غير صحيحة. لحل هذه المشكلة، فكر في استخدام الدالة INET_ATON لتسهيل الفرز.

الاستعلام المعدل:

SELECT version_number من الجدول ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
SELECT version_number 
FROM table 
ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
تعتمد هذه التقنية على الدالة INET_ATON لتحويل سلسلة تمثل عنوان IP إلى تمثيل رقمي . من خلال تسلسل '.0.0.0' إلى version_number، فإننا نضمن أن كل رقم إصدار يحتوي على أربعة مكونات على الأقل، والتي نستخدم بعد ذلك SUBSTRING_INDEX لاستخراجها.

من خلال الفرز بناءً على التمثيل الرقمي للمكونات الأربعة الأولى من كل رقم إصدار، نحقق ترتيب الفرز المطلوب. ومع ذلك، لاحظ أنه بما أن هذا الفرز يعتمد على دالة، فقد يؤدي إلى عقوبة أداء مقارنة بالفرز مباشرة على العمود الذي يحتوي على فهرس.

هناك حل آخر، يقترحه @spanky، يتضمن فصل مكونات رقم الإصدار إلى الأعمدة الفردية. على سبيل المثال، قم بإنشاء أعمدة للإصدارات الرئيسية والثانوية والتصحيحية والإنشاءية. يسمح هذا الأسلوب بالفرز الفعال لمكونات محددة، ولكنه قد يتطلب معالجة أكثر تعقيدًا للبيانات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3