आधार-64 कार्य हैं (जैसे encode
) लेकिन आधार -36 के लिए कुछ नहीं। लेकिन आप अपना खुद का लिख सकते हैं या इसका उपयोग करें
:
CREATE OR REPLACE FUNCTION base36_encode(IN digits bigint, IN min_width int = 0) RETURNS varchar AS $$
DECLARE
chars char[];
ret varchar;
val bigint;
BEGIN
chars := ARRAY['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
val := digits;
ret := '';
IF val < 0 THEN
val := val * -1;
END IF;
WHILE val != 0 LOOP
ret := chars[(val % 36)+1] || ret;
val := val / 36;
END LOOP;
IF min_width > 0 AND char_length(ret) < min_width THEN
ret := lpad(ret, min_width, '0');
END IF;
RETURN ret;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
मुझे लगता है कि आपको खुद से पूछना चाहिए कि क्या इस तरह के डेटा स्वरूपण से निपटने के लिए डेटाबेस सही जगह है, हालांकि, इस तरह के प्रस्तुतिकरण मुद्दों को आपके स्टैक के अंतिम देखने के स्तर के करीब बेहतर ढंग से संभाला जा सकता है।