यदि आपकी सभी संस्करण संख्याएं इनमें से किसी की तरह दिखती हैं:
X
X.X
X.X.X
X.X.X.X
जहां एक्स 0 से 255 (समावेशी) तक एक पूर्णांक है, तो आप INET_ATON()
का उपयोग कर सकते हैं तुलना के लिए उपयुक्त स्ट्रिंग्स को पूर्णांकों में बदलने का कार्य करता है।
फ़ंक्शन को लागू करने से पहले, हालांकि, आपको यह सुनिश्चित करना होगा कि फ़ंक्शन का तर्क X.X.X.X
का है '.0'
. की आवश्यक मात्रा जोड़कर फॉर्म इसके लिए। ऐसा करने के लिए, आपको सबसे पहले यह पता लगाना होगा कि कितने .
की स्ट्रिंग में पहले से ही शामिल है, जिसे इस तरह किया जा सकता है:
CHAR_LENGTH(ver) - CHAR_LENGTH(REPLACE(ver, '.', '')
अर्थात्, स्ट्रिंग में आवर्तों की संख्या, अवधियों को हटाने के बाद स्ट्रिंग की लंबाई घटाकर उसकी लंबाई है।
फिर प्राप्त परिणाम को 3
. से घटाया जाना चाहिए और, '.0'
. के साथ , REPEAT()
. को पास किया गया समारोह:
REPEAT('.0', 3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
यह हमें वह सबस्ट्रिंग देगा जिसे मूल ver
. में जोड़ा जाना चाहिए मान, X.X.X.X
. के अनुरूप होने के लिए प्रारूप। तो, यह, बदले में, CONCAT()
. को पास कर दिया जाएगा ver
. के साथ कार्य करें . और उसका परिणाम CONCAT()
अब सीधे INET_ATON()
को पास किया जा सकता है . तो यहाँ हमें अंततः क्या मिलता है:
INET_ATON(
CONCAT(
ver,
REPEAT(
'.0',
3 - CHAR_LENGTH(ver) + CHAR_LENGTH(REPLACE(ver, '.', ''))
)
)
)
और यह केवल एक मूल्य के लिए है! :) अन्य स्ट्रिंग के लिए एक समान अभिव्यक्ति का निर्माण किया जाना चाहिए, बाद में आप परिणामों की तुलना कर सकते हैं।
संदर्भ: