Es gibt Base-64-Funktionen (wie etwa ). encode
) aber nichts für base-36. Aber Sie könnten einen eigenen schreiben oder diesen verwenden
:
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;
Ich denke, Sie sollten sich fragen, ob die Datenbank der richtige Ort ist, um mit dieser Art von Datenformatierung umzugehen, aber Präsentationsprobleme wie diese sollten besser näher an der endgültigen Anzeigeebene Ihres Stacks behandelt werden.