加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL:是否有一个函数可以将base-10 int转换为base-36字符

发布时间:2020-12-13 16:15:35 所属栏目:百科 来源:网络整理
导读:PostgreSQL中是否有一个函数可以将像30这样的基数为10的数字转换成像你这样的基数36表示? 有base-64功能(例如 encode )但没有base-36功能.但你可以写一个你自己的或 use this one(注意这个链接已经死了,我会把它留下来,因为它是我唯一的归属): CREATE OR R
PostgreSQL中是否有一个函数可以将像30这样的基数为10的数字转换成像你这样的基数36表示?
有base-64功能(例如 encode)但没有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;

我认为你应该问问自己数据库是否是处理这种数据格式化的正确位置,但是这样的表现问题可能会更接近堆栈的最终查看级别.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读