आप decode
. का उपयोग करके हेक्स स्ट्रिंग को बाइटा में बदल सकते हैं फ़ंक्शन (जहां "एन्कोडिंग" का अर्थ है कुछ टेक्स्ट मान के लिए बाइनरी मान एन्कोड करना)। उदाहरण के लिए:
select decode('DEADBEEF', 'hex');
decode
------------------
\336\255\276\357
जो कि 9.0 के डिफ़ॉल्ट आउटपुट के साथ अधिक समझ में आता है:
decode
------------
\xdeadbeef
जिस कारण से आप E'\xDE\xAD\xBE\xEF'
नहीं कह सकते यह है कि इसका उद्देश्य टेक्स्ट वैल्यू बनाना है, बाइटा नहीं, इसलिए Postgresql इसे क्लाइंट एन्कोडिंग से डेटाबेस एन्कोडिंग में बदलने का प्रयास करेगा। आप इस तरह बाइटा एस्केप प्रारूप लिख सकते हैं, लेकिन आपको बैकस्लैश को दोगुना करने की आवश्यकता है:E'\\336\\255\\276\\357'::bytea
. मुझे लगता है कि आप देख सकते हैं कि बाइटा प्रारूप क्यों बदला जा रहा है... IMHO decode()
फ़ंक्शन इनपुट लिखने का एक उचित तरीका है, भले ही इसमें कुछ ओवरहेड शामिल हो।