有base-64功能(例如
原文链接:https://www.f2er.com/postgresql/191989.htmlencode
)但没有base-36功能.但你可以写一个你自己的或
use this one(注意这个链接已经死了,我会把它留下来,因为它是我唯一的归属):
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;
我认为你应该问问自己数据库是否是处理这种数据格式化的正确位置,但是这样的表现问题可能会更接近堆栈的最终查看级别.