MySQL CONV() और CAST(): हेक्साडेसिमल MD5 को दशमलव में बदलना
MD5 हैश 32 अक्षरों का हेक्साडेसिमल स्ट्रिंग होता है। MySQL में CONV() फंक्शन (बेस परिवर्तन) और CAST() का उपयोग करके इसे दशमलव (बेस 10) में बदला जा सकता है।
उदाहरण: MD5 को दशमलव में बदलें
टेबल बनाएं:
CREATE TABLE DemoTable (Password TEXT);
INSERT INTO DemoTable VALUES
('a5391e96f8d48a62e8c85381df108e98'),
('ea7a32d2dc5bb793af262dcb6ea1a54d');
रूपांतरण क्वेरी
SELECT
CAST(CONV(SUBSTR(Password, 1, 16), 16, 10) AS DECIMAL(65)) * 18446744073709551616
+ CAST(CONV(SUBSTR(Password, 17, 16), 16, 10) AS DECIMAL(65))
AS DecimalValue
FROM DemoTable;
परिणाम:
+-----------------------------------------+ | DecimalValue | +-----------------------------------------+ | 219619200658969319114298942978912194200 | | 311673842057003455136843080376797734221 | +-----------------------------------------+
चरण-दर-चरण व्याख्या
SUBSTR(Password, 1, 16)— पहले 16 हेक्स अक्षर (उच्च 64 बिट)SUBSTR(Password, 17, 16)— अगले 16 हेक्स अक्षर (निम्न 64 बिट)CONV(..., 16, 10)— हेक्स (बेस 16) से दशमलव (बेस 10) में बदलेंCAST(... AS DECIMAL(65))— बड़ी संख्या के लिए डेसीमल टाइप में कास्ट- उच्च भाग × 2⁶⁴ + निम्न भाग = पूर्ण 128-बिट मान
18446744073709551616= 2⁶⁴
सरल विकल्प: केवल तुलना के लिए
यदि केवल तुलना/सॉर्टिंग के लिए चाहिए, तो हेक्स स्ट्रिंग पर सीधे काम करें:
SELECT CAST(CONV(Password, 16, 10) AS UNSIGNED) FROM DemoTable;
नोट: 128-बिट मान UNSIGNED BIGINT (64-बिट) में फिट नहीं होगा।
उपयोग केस
- लेगेसी सिस्टम इंटीग्रेशन जहां दशमलव ID आवश्यक
- कुछ क्रिप्टोग्राफिक गणनाएं
- आमतौर पर MD5 को हेक्स स्ट्रिंग या बाइनरी (UNHEX) के रूप में स्टोर करना बेहतर