यह बदसूरत है, लेकिन यह काम करेगा:
ORDER
BY SUBSTRING_INDEX(CONCAT( col ,'.'),'.',1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',2),'.',-1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',3),'.',-1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',4),'.',-1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',5),'.',-1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',6),'.',-1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',7),'.',-1) + 0
इन अभिव्यक्तियों का परीक्षण करने के लिए, आप उन्हें एक चयन में उपयोग कर सकते हैं और सत्यापित कर सकते हैं कि वे सही घटकों को निकालते हैं, और उन्हें सही ढंग से आदेश दिया गया है:
SELECT col
, SUBSTRING_INDEX(CONCAT( col ,'.'),'.',1) + 0 AS p1
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',2),'.',-1) + 0 AS p2
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',3),'.',-1) + 0 AS p3
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',4),'.',-1) + 0 AS p4
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',5),'.',-1) + 0 AS p5
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',6),'.',-1) + 0 AS p6
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',7),'.',-1) + 0 AS p7
FROM mytable
ORDER BY 2,3,4,5,6,7,8
यह कैसे काम करता है, यह समझाने के बजाय, मैं केवल महत्वपूर्ण "ट्रिक्स" को हिट करने जा रहा हूँ
-
एक अनुगामी संलग्न करें "।" कर्नल के अंत में, आपको इसकी आवश्यकता है ताकि आप पिछली स्थिति को कई बार वापस न पाएं,
-
nवें '.' तक के हिस्से को पुनः प्राप्त करने के लिए SUBSTRING_INDEX का उपयोग करें।
-
SUBSTRING_INDEX का उपयोग उसके पीछे के हिस्से को पुनः प्राप्त करने के लिए करें (पीछे की ओर पढ़ते हुए, अग्रणी बिंदु पर
-
स्ट्रिंग को अंकीय मान में बदलने के लिए शून्य जोड़ें