Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में वर्जन स्ट्रिंग (x.y.z) की तुलना कैसे करें?

यदि आपकी सभी संस्करण संख्याएं इनमें से किसी की तरह दिखती हैं:

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, '.', ''))
    )
  )
)

और यह केवल एक मूल्य के लिए है! :) अन्य स्ट्रिंग के लिए एक समान अभिव्यक्ति का निर्माण किया जाना चाहिए, बाद में आप परिणामों की तुलना कर सकते हैं।

संदर्भ:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql के लिए अक्षांश/देशांतर भौगोलिक खोज को अनुकूलित करने में सहायता चाहिए

  2. तालिका में प्रत्येक कॉलम को अनुक्रमित करना

  3. एक mysql कॉलम का 'उचित मामला' स्वरूपण कैसे करें?

  4. mysql GROUP_CONCAT डुप्लीकेट

  5. JOIN बनाम WHERE:समान परिणाम प्राप्त करने वाली दो क्वेरीज़ परिमाण प्रदर्शन अंतर के 3-4 क्रम क्यों प्रदर्शित करती हैं?