तो, टिप्पणियों के जवाब के रूप में। 36-चार यूयूआईडी को बाइनरी(16) के रूप में स्टोर करने का सही तरीका इस तरह से इंसर्ट करना है:
INSERT INTO sometable (UUID) VALUES
(UNHEX(REPLACE("3f06af63-a93c-11e4-9797-00505690773f", "-","")))
UNHEX
क्योंकि एक यूयूआईडी पहले से ही एक हेक्साड मान है। हम ट्रिम करते हैं (REPLACE
) स्टेटमेंट में डैश की लंबाई 32 वर्णों तक लाने के लिए (हमारे 16 बाइट्स HEX
के रूप में दर्शाए गए हैं) ) जाहिर है, इसे स्टोर करने से पहले आप इसे किसी भी समय कर सकते हैं, इसलिए इसे डेटाबेस द्वारा नियंत्रित करने की आवश्यकता नहीं है।
आप यूयूआईडी को इस तरह पुनः प्राप्त कर सकते हैं:
SELECT HEX(UUID) FROM sometable;
बस अगर कोई इस धागे में आता है और अनिश्चित है कि यह कैसे काम करता है।
और याद रखें:यदि आप UUID का उपयोग करके एक पंक्ति का चयन कर रहे हैं, तो UNHEX()
का उपयोग करें शर्त पर :
SELECT * FROM sometable WHERE UUID = UNHEX('3f06af63a93c11e4979700505690773f');
या शाब्दिक संकेत (जैसा कि एलेक्सिस विल्के ने बताया है):
SELECT * FROM sometable WHERE UUID = 0x3f06af63a93c11e4979700505690773f;
और नहीं HEX()
कॉलम पर:
SELECT * FROM sometable WHERE HEX(UUID) = '3f06af63a93c11e4979700505690773f';
अंतिम समाधान, जबकि यह काम करता है, की आवश्यकता है कि MySQL HEX
es सभी UUIDs इससे पहले कि यह निर्धारित कर सके कि कौन सी पंक्तियाँ मेल खाती हैं। यह बहुत अक्षम है।
संपादित करें:यदि आप MySQL 8 का उपयोग कर रहे हैं, तो आपको SlyDave के उत्तर में उल्लिखित UUID कार्यों पर एक नज़र डालनी चाहिए। यह उत्तर अभी भी सही है, लेकिन यह यूयूआईडी इंडेक्स को अनुकूलित नहीं करता है जो उन कार्यों का उपयोग करके मूल रूप से किया जा सकता है। यदि आप