MySQL

2010-06-27 21 views
17

में हेक्स मान डालें मेरे पास एक वर्जिनरी कॉलम वाला एक टेबल है। मुझे '4 डी 2 एएफएफ' जैसी स्ट्रिंग डालने की आवश्यकता है जो क्रमशः हेक्स मान 0x4D, 0x2A और 0xFF का प्रतिनिधित्व करता है। मैं इस कथन का निर्माण कैसे करूं?MySQL

उत्तर

26

आप UNHEX() फ़ंक्शन का उपयोग हेक्सस्टिंग को हेक्स जोड़े के साथ बाइनरी में परिवर्तित करने और HEX() को दूसरे तरीके से करने के लिए कर सकते हैं।

आईई।

INSERT INTO tbl (col) VALUES (UNHEX('4D2AFF')) 

और

SELECT HEX(col) FROM tbl 
+0

एक आकर्षण की तरह काम करता है। धन्यवाद। – Tim

+0

आपका स्वागत है। – BalusC

2

हेक्स() और Unhex() फ़ंक्शन पहले ही उल्लेख किया गया है, लेकिन मैं एक विकल्प के तर्ज पर वजन करने के साथ करना चाहते हैं।

आप पहले और बाद में तारों का उपयोग कैसे कर रहे हैं? यदि आप अंतिम संभव मिनट तक कवरियन से बच सकते हैं, तो यह अत्यधिक अधिमान्य है। इस तरह आप कुछ गलत होने का जोखिम नहीं उठाते हैं, या भूल जाते हैं कि डीबी से निकाली गई वस्तु को पहले से ही परिवर्तित कर दिया गया है या नहीं।

2

यहां एक महान ब्लॉग पोस्ट है जिसका मैं हमेशा हेक्स मूल्यों और बाइनरी फ़ील्ड के उचित संचालन को याद दिलाने के लिए संदर्भित करता हूं, और कुछ प्रदर्शन प्रभाव डालता हूं।

http://www.xaprb.com/blog/2009/02/12/5-ways-to-make-hexadecimal-identifiers-perform-better-on-mysql/

4

या आप भी ऐसा कर सकते हैं:

INSERT INTO tbl (col) VALUES (X'4D2AFF') 

कुछ अधिक जानकारी के लिए this देखें।

+1

ध्यान दें कि MySQL 5.6 में भी, एक्स '' नोटेशन में संदर्भ mysql क्लाइंट और UNHEX() में लंबाई सीमा है (प्रकट होता है)। मुझे नहीं पता कि एक्स 'के लिए सीमा क्या है, क्योंकि इसे आधिकारिक तौर पर दस्तावेज नहीं किया गया है लेकिन मुझे एक ब्लॉब में प्रवेश करने का प्रयास करते समय इसका सामना करना पड़ा है। एक्स '' शाब्दिक के साथ, MySQL क्लाइंट ने पर्याप्त लंबे हेक्स अनुक्रम के साथ एक वाक्यविन्यास त्रुटि फेंक दी, जबकि उसी अनुक्रम के यूएनएचएक्स() ने नहीं किया। – cowbert