您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Postgres 9.6+中生成长度为N的随机,唯一的字母数字ID?

如何在Postgres 9.6+中生成长度为N的随机,唯一的字母数字ID?

弄清楚了,下面是执行此操作的函数

CREATE OR REPLACE FUNCTION generate_uid(size INT) RETURNS TEXT AS $$
DECLARE
  characters TEXT := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  bytes BYTEA := gen_random_bytes(size);
  l INT := length(characters);
  i INT := 0;
  output TEXT := '';
BEGIN
  WHILE i < size LOOP
    output := output || substr(characters, get_byte(bytes, i) % l + 1, 1);
    i := i + 1;
  END LOOP;
  RETURN output;
END;
$$ LANGUAGE plpgsql VOLATILE;

然后运行它只需执行以下操作:

generate_uid(10)
-- '3Rls4DjWxJ'
Postgres 2022/1/1 18:46:36 有403人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶